From de763bedee23494035752c11abc5a62e26364e47 Mon Sep 17 00:00:00 2001 From: jgoecks Date: Sun, 26 Jun 2016 18:13:22 -0400 Subject: [PATCH] Initial commit to get working BBI reader into Trackster. --- client/galaxy/scripts/libs/bbi/bigwig.js | 1192 +++++++++ .../scripts/libs/bbi/jquery-ajax-native.js | 157 ++ client/galaxy/scripts/libs/bbi/jszlib.js | 2163 +++++++++++++++++ client/galaxy/scripts/libs/bbi/spans.js | 257 ++ client/galaxy/scripts/viz/bbi-data-manager.js | 60 + client/galaxy/scripts/viz/trackster/tracks.js | 32 +- static/maps/libs/bbi/bigwig.js.map | 1 + .../maps/libs/bbi/jquery-ajax-native.js.map | 1 + static/maps/libs/bbi/jszlib.js.map | 1 + static/maps/libs/bbi/spans.js.map | 1 + static/maps/viz/bbi-data-manager.js.map | 1 + static/maps/viz/trackster/tracks.js.map | 2 +- static/scripts/libs/bbi/bigwig.js | 2 + static/scripts/libs/bbi/jquery-ajax-native.js | 2 + static/scripts/libs/bbi/jszlib.js | 2 + static/scripts/libs/bbi/spans.js | 2 + static/scripts/viz/bbi-data-manager.js | 2 + static/scripts/viz/trackster/tracks.js | 4 +- 18 files changed, 3877 insertions(+), 5 deletions(-) create mode 100644 client/galaxy/scripts/libs/bbi/bigwig.js create mode 100644 client/galaxy/scripts/libs/bbi/jquery-ajax-native.js create mode 100644 client/galaxy/scripts/libs/bbi/jszlib.js create mode 100644 client/galaxy/scripts/libs/bbi/spans.js create mode 100644 client/galaxy/scripts/viz/bbi-data-manager.js create mode 100644 static/maps/libs/bbi/bigwig.js.map create mode 100644 static/maps/libs/bbi/jquery-ajax-native.js.map create mode 100644 static/maps/libs/bbi/jszlib.js.map create mode 100644 static/maps/libs/bbi/spans.js.map create mode 100644 static/maps/viz/bbi-data-manager.js.map create mode 100644 static/scripts/libs/bbi/bigwig.js create mode 100644 static/scripts/libs/bbi/jquery-ajax-native.js create mode 100644 static/scripts/libs/bbi/jszlib.js create mode 100644 static/scripts/libs/bbi/spans.js create mode 100644 static/scripts/viz/bbi-data-manager.js diff --git a/client/galaxy/scripts/libs/bbi/bigwig.js b/client/galaxy/scripts/libs/bbi/bigwig.js new file mode 100644 index 00000000000..e3b94e05deb --- /dev/null +++ b/client/galaxy/scripts/libs/bbi/bigwig.js @@ -0,0 +1,1192 @@ +// +// Author: Jeremy Goecks +// +// Modified from: +// +// Dalliance Genome Explorer +// (c) Thomas Down 2006-2010 +// +// bigwig.js: indexed binary WIG (and BED) files +// + +// Requirements: +// * jquery and ajax-native plugin for reading binary data, jquery for promises +// * spans for working working with genomic intervals +// * jszlib for decompression. +define(["libs/bbi/spans", "libs/bbi/jszlib", "libs/bbi/jquery-ajax-native"], function(spans, jszlib) { + "use strict"; + + // -- Copied from das.js -- + + function DASFeature() { + } + + function DASGroup(id) { + if (id) + this.id = id; + } + + // -- End copy -- + + // -- Copied from bin.js -- + + function readInt(ba, offset) { + return (ba[offset + 3] << 24) | (ba[offset + 2] << 16) | (ba[offset + 1] << 8) | (ba[offset]); + } + + // -- End copy -- + + // Some globals. + var Range = spans.Range; + var union = spans.union; + var intersection = spans.intersection; + + var jszlib_inflate_buffer = jszlib.inflateBuffer; + var arrayCopy = jszlib.arrayCopy; + + var BIG_WIG_MAGIC = 0x888FFC26; + var BIG_WIG_MAGIC_BE = 0x26FC8F88; + var BIG_BED_MAGIC = 0x8789F2EB; + var BIG_BED_MAGIC_BE = 0xEBF28987; + + + var BIG_WIG_TYPE_GRAPH = 1; + var BIG_WIG_TYPE_VSTEP = 2; + var BIG_WIG_TYPE_FSTEP = 3; + + var M1 = 256; + var M2 = 256*256; + var M3 = 256*256*256; + var M4 = 256*256*256*256; + + var BED_COLOR_REGEXP = new RegExp("^[0-9]+,[0-9]+,[0-9]+"); + + /** + * Read binary data from a URL using HTTP Range header. Requires jQuery and ajax-native plugin. + */ + function read(url, start, size) { + // Taken from bin.js: + // This may be necessary for Safari: + // if ((isSafari || this.opts.salt) && url.indexOf('?') < 0) { + // url = url + '?salt=' + b64_sha1('' + Date.now() + ',' + (++seed)); + // } + + var chunkSizeLimit = Math.pow(10, 6); // 1 MB + if(size > chunkSizeLimit) { + // TODO: raise error. + } + + // Read data from remote file. + return $.ajax({ + type: 'GET', + dataType: 'native', + url: url, + // Potential timeout on first request to catch mixed-content errors on Chromium. + timeout: 5000, + beforeSend: function(xhrObj) { + // (size - 1) because range is inclusive. + xhrObj.setRequestHeader("Range", "bytes=" + start + "-" + (start + (size - 1))); + }, + xhrFields: { + responseType: 'arraybuffer' + } + }); + } + + function bwg_readOffset(ba, o) { + var offset = ba[o] + ba[o+1]*M1 + ba[o+2]*M2 + ba[o+3]*M3 + ba[o+4]*M4; + return offset; + } + + function BigWig() { + } + + /** + * Read the chromosome B+ tree header. + */ + BigWig.prototype.readChromTree = function() { + var thisB = this; + this.chromsToIDs = {}; + this.idsToChroms = {}; + this.maxID = 0; + + var udo = this.unzoomedDataOffset; + var eb = (udo - this.chromTreeOffset) & 3; + udo = udo + 4 - eb; + + // Read and parse the chrom tree, return the promise so that subsequent actions can be taken. + return $.when(read(this.url, this.chromTreeOffset, udo - this.chromTreeOffset)).then(function(bpt) { + var ba = new Uint8Array(bpt); + var sa = new Int16Array(bpt); + var la = new Int32Array(bpt); + var bptMagic = la[0]; + var blockSize = la[1]; + var keySize = la[2]; + var valSize = la[3]; + var itemCount = bwg_readOffset(ba, 16); + var rootNodeOffset = 32; + + var bptReadNode = function(offset) { + var nodeType = ba[offset]; + var cnt = sa[(offset/2) + 1]; + offset += 4; + for (var n = 0; n < cnt; ++n) { + if (nodeType === 0) { + offset += keySize; + var childOffset = bwg_readOffset(ba, offset); + offset += 8; + childOffset -= thisB.chromTreeOffset; + bptReadNode(childOffset); + } else { + var key = ''; + for (var ki = 0; ki < keySize; ++ki) { + var charCode = ba[offset++]; + if (charCode !== 0) { + key += String.fromCharCode(charCode); + } + } + var chromId = (ba[offset+3]<<24) | (ba[offset+2]<<16) | (ba[offset+1]<<8) | (ba[offset+0]); + var chromSize = (ba[offset + 7]<<24) | (ba[offset+6]<<16) | (ba[offset+5]<<8) | (ba[offset+4]); + offset += 8; + + thisB.chromsToIDs[key] = chromId; + if (key.indexOf('chr') === 0) { + thisB.chromsToIDs[key.substr(3)] = chromId; + } + thisB.idsToChroms[chromId] = key; + thisB.maxID = Math.max(thisB.maxID, chromId); + } + } + }; + bptReadNode(rootNodeOffset); + }); + } + + function BigWigView(bwg, cirTreeOffset, cirTreeLength, isSummary) { + this.bwg = bwg; + this.cirTreeOffset = cirTreeOffset; + this.cirTreeLength = cirTreeLength; + this.isSummary = isSummary; + } + + + + BigWigView.prototype.readWigData = function(chrName, min, max) { + var chr = this.bwg.chromsToIDs[chrName], + rval; + if (chr === undefined) { + // Not an error because some .bwgs won't have data for all chromosomes. + rval = []; + } else { + rval = this.readWigDataById(chr, min, max); + } + + return rval; + }; + + BigWigView.prototype.readWigDataById = function(chr, min, max) { + var thisB = this, + promise = $.Deferred(); + + // Read the R-tree index header and then read data again. + if (!this.cirHeader) { + $.when(read(thisB.bwg.url, this.cirTreeOffset, 48)).then(function(result) { + thisB.cirHeader = result; + var la = new Int32Array(thisB.cirHeader); + thisB.cirBlockSize = la[1]; + $.when(thisB.readWigDataById(chr, min, max)).then(function(result) { + promise.resolve(result); + }); + }); + return promise; + } + + var blocksToFetch = []; + var outstanding = 0; + + var beforeBWG = Date.now(); + + var filter = function(chromId, fmin, fmax, toks) { + return ((chr < 0 || chromId == chr) && fmin <= max && fmax >= min); + }; + + var cirFobRecur = function(offset, level) { + if (thisB.bwg.instrument) + console.log('level=' + level + '; offset=' + offset + '; time=' + (Date.now()|0)); + + outstanding += offset.length; + + if (offset.length == 1 && offset[0] - thisB.cirTreeOffset == 48 && thisB.cachedCirRoot) { + cirFobRecur2(thisB.cachedCirRoot, 0, level); + --outstanding; + if (outstanding === 0) { + $.when(thisB.fetchFeatures(filter, blocksToFetch)).then(function(result) { + promise.resolve(result); + }); + } + return; + } + + var maxCirBlockSpan = 4 + (thisB.cirBlockSize * 32); // Upper bound on size, based on a completely full leaf node. + var spans; + for (var i = 0; i < offset.length; ++i) { + var blockSpan = new Range(offset[i], offset[i] + maxCirBlockSpan); + spans = spans ? union(spans, blockSpan) : blockSpan; + } + + var fetchRanges = spans.ranges(); + for (var r = 0; r < fetchRanges.length; ++r) { + var fr = fetchRanges[r]; + cirFobStartFetch(offset, fr, level); + } + }; + + var cirFobStartFetch = function(offset, fr, level, attempts) { + var length = fr.max() - fr.min(); + $.when(read(thisB.bwg.url, fr.min(), fr.max() - fr.min())).then(function(resultBuffer) { + for (var i = 0; i < offset.length; ++i) { + if (fr.contains(offset[i])) { + cirFobRecur2(resultBuffer, offset[i] - fr.min(), level); + + if (offset[i] - thisB.cirTreeOffset == 48 && offset[i] - fr.min() === 0) + thisB.cachedCirRoot = resultBuffer; + + --outstanding; + if (outstanding === 0) { + $.when(thisB.fetchFeatures(filter, blocksToFetch)).then(function(result) { + promise.resolve(result); + }); + } + } + } + }); + }; + + var cirFobRecur2 = function(cirBlockData, offset, level) { + var ba = new Uint8Array(cirBlockData); + var sa = new Int16Array(cirBlockData); + var la = new Int32Array(cirBlockData); + + var isLeaf = ba[offset]; + var cnt = sa[offset/2 + 1]; + offset += 4; + + if (isLeaf !== 0) { + for (var i = 0; i < cnt; ++i) { + var lo = offset/4; + var startChrom = la[lo]; + var startBase = la[lo + 1]; + var endChrom = la[lo + 2]; + var endBase = la[lo + 3]; + var blockOffset = bwg_readOffset(ba, offset+16); + var blockSize = bwg_readOffset(ba, offset+24); + if (((chr < 0 || startChrom < chr) || (startChrom == chr && startBase <= max)) && + ((chr < 0 || endChrom > chr) || (endChrom == chr && endBase >= min))) + { + blocksToFetch.push({offset: blockOffset, size: blockSize}); + } + offset += 32; + } + } else { + var recurOffsets = []; + for (var i = 0; i < cnt; ++i) { + var lo = offset/4; + var startChrom = la[lo]; + var startBase = la[lo + 1]; + var endChrom = la[lo + 2]; + var endBase = la[lo + 3]; + var blockOffset = bwg_readOffset(ba, offset+16); + if ((chr < 0 || startChrom < chr || (startChrom == chr && startBase <= max)) && + (chr < 0 || endChrom > chr || (endChrom == chr && endBase >= min))) + { + recurOffsets.push(blockOffset); + } + offset += 24; + } + if (recurOffsets.length > 0) { + cirFobRecur(recurOffsets, level + 1); + } + } + }; + + cirFobRecur([thisB.cirTreeOffset + 48], 1); + return promise; + }; + + /** + * Fetch data for a set of blocks. Returns a promise that resolves to fetched data. + */ + BigWigView.prototype.fetchFeatures = function(filter, blocksToFetch) { + var thisB = this, + promise = $.Deferred(); + + blocksToFetch.sort(function(b0, b1) { + return (b0.offset|0) - (b1.offset|0); + }); + + if (blocksToFetch.length === 0) { + return []; + } else { + var features = []; + var createFeature = function(chr, fmin, fmax, opts) { + if (!opts) { + opts = {}; + } + + var f = new DASFeature(); + f._chromId = chr; + f.segment = thisB.bwg.idsToChroms[chr]; + f.min = fmin; + f.max = fmax; + f.type = thisB.bwg.type; + + for (var k in opts) { + f[k] = opts[k]; + } + + features.push(f); + }; + + // Recursive function to read blocks of data. + var tramp = function() { + if (blocksToFetch.length === 0) { + var afterBWG = Date.now(); + // dlog('BWG fetch took ' + (afterBWG - beforeBWG) + 'ms'); + return promise.resolve(features); + } + else { + var block = blocksToFetch[0]; + if (block.data) { + thisB.parseFeatures(block.data, createFeature, filter); + blocksToFetch.splice(0, 1); + tramp(); + } + else { + var fetchStart = block.offset; + var fetchSize = block.size; + var bi = 1; + while (bi < blocksToFetch.length && blocksToFetch[bi].offset == (fetchStart + fetchSize)) { + fetchSize += blocksToFetch[bi].size; + ++bi; + } + + $.when(read(thisB.bwg.url, fetchStart, fetchSize)).then(function(result) { + var offset = 0; + var bi = 0; + while (offset < fetchSize) { + var fb = blocksToFetch[bi]; + + var data; + if (thisB.bwg.uncompressBufSize > 0) { + data = jszlib_inflate_buffer(result, offset + 2, fb.size - 2); + } else { + var tmp = new Uint8Array(fb.size); // FIXME is this really the best we can do? + arrayCopy(new Uint8Array(result, offset, fb.size), 0, tmp, 0, fb.size); + data = tmp.buffer; + } + fb.data = data; + + offset += fb.size; + ++bi; + } + tramp(); + }); + } + } + }; + tramp(); + } + + return promise; + }; + + BigWigView.prototype.parseFeatures = function(data, createFeature, filter) { + var ba = new Uint8Array(data); + + if (this.isSummary) { + var sa = new Int16Array(data); + var la = new Int32Array(data); + var fa = new Float32Array(data); + + var itemCount = data.byteLength/32; + for (var i = 0; i < itemCount; ++i) { + var chromId = la[(i*8)]; + var start = la[(i*8)+1]; + var end = la[(i*8)+2]; + var validCnt = la[(i*8)+3]; + var minVal = fa[(i*8)+4]; + var maxVal = fa[(i*8)+5]; + var sumData = fa[(i*8)+6]; + var sumSqData = fa[(i*8)+7]; + + if (filter(chromId, start + 1, end)) { + var summaryOpts = {type: 'bigwig', score: sumData/validCnt, maxScore: maxVal}; + if (this.bwg.type == 'bigbed') { + summaryOpts.type = 'density'; + } + createFeature(chromId, start + 1, end, summaryOpts); + } + } + } + else if (this.bwg.type == 'bigwig') { + var sa = new Int16Array(data); + var la = new Int32Array(data); + var fa = new Float32Array(data); + + var chromId = la[0]; + var blockStart = la[1]; + var blockEnd = la[2]; + var itemStep = la[3]; + var itemSpan = la[4]; + var blockType = ba[20]; + var itemCount = sa[11]; + + if (blockType == BIG_WIG_TYPE_FSTEP) { + for (var i = 0; i < itemCount; ++i) { + var score = fa[i + 6]; + var fmin = blockStart + (i*itemStep) + 1, fmax = blockStart + (i*itemStep) + itemSpan; + if (filter(chromId, fmin, fmax)) + createFeature(chromId, fmin, fmax, {score: score}); + } + } else if (blockType == BIG_WIG_TYPE_VSTEP) { + for (var i = 0; i < itemCount; ++i) { + var start = la[(i*2) + 6] + 1; + var end = start + itemSpan - 1; + var score = fa[(i*2) + 7]; + if (filter(chromId, start, end)) + createFeature(chromId, start, end, {score: score}); + } + } else if (blockType == BIG_WIG_TYPE_GRAPH) { + for (var i = 0; i < itemCount; ++i) { + var start = la[(i*3) + 6] + 1; + var end = la[(i*3) + 7]; + var score = fa[(i*3) + 8]; + if (start > end) { + start = end; + } + if (filter(chromId, start, end)) + createFeature(chromId, start, end, {score: score}); + } + } else { + console.log('Currently not handling bwgType=' + blockType); + } + } else if (this.bwg.type == 'bigbed') { + var offset = 0; + var dfc = this.bwg.definedFieldCount; + var schema = this.bwg.schema; + + while (offset < ba.length) { + var chromId = (ba[offset+3]<<24) | (ba[offset+2]<<16) | (ba[offset+1]<<8) | (ba[offset+0]); + var start = (ba[offset+7]<<24) | (ba[offset+6]<<16) | (ba[offset+5]<<8) | (ba[offset+4]); + var end = (ba[offset+11]<<24) | (ba[offset+10]<<16) | (ba[offset+9]<<8) | (ba[offset+8]); + offset += 12; + var rest = ''; + while (true) { + var ch = ba[offset++]; + if (ch != 0) { + rest += String.fromCharCode(ch); + } else { + break; + } + } + + var featureOpts = {}; + + var bedColumns; + if (rest.length > 0) { + bedColumns = rest.split('\t'); + } else { + bedColumns = []; + } + if (bedColumns.length > 0 && dfc > 3) { + featureOpts.label = bedColumns[0]; + } + if (bedColumns.length > 1 && dfc > 4) { + var score = parseInt(bedColumns[1]); + if (!isNaN(score)) + featureOpts.score = score; + } + if (bedColumns.length > 2 && dfc > 5) { + featureOpts.orientation = bedColumns[2]; + } + if (bedColumns.length > 5 && dfc > 8) { + var color = bedColumns[5]; + if (BED_COLOR_REGEXP.test(color)) { + featureOpts.itemRgb = 'rgb(' + color + ')'; + } + } + + if (bedColumns.length > dfc-3 && schema) { + for (var col = dfc - 3; col < bedColumns.length; ++col) { + featureOpts[schema.fields[col+3].name] = bedColumns[col]; + } + } + + if (filter(chromId, start + 1, end, bedColumns)) { + if (dfc < 12) { + createFeature(chromId, start + 1, end, featureOpts); + } else { + // TODO: add block starts, sizes, thick start, thick end to feature. + var thickStart = bedColumns[3]|0; + var thickEnd = bedColumns[4]|0; + var blockCount = bedColumns[6]|0; + var blockSizes = bedColumns[7].split(','); + var blockStarts = bedColumns[8].split(','); + + if (featureOpts.exonFrames) { + var exonFrames = featureOpts.exonFrames.split(','); + featureOpts.exonFrames = undefined; + } + + featureOpts.type = 'transcript' + var grp = new DASGroup(); + for (var k in featureOpts) { + grp[k] = featureOpts[k]; + } + grp.id = bedColumns[0]; + grp.segment = this.bwg.idsToChroms[chromId]; + grp.min = start + 1; + grp.max = end; + grp.notes = []; + featureOpts.groups = [grp]; + + // Moving towards using bigGenePred model, but will + // still support old Dalliance-style BED12+gene-name for the + // foreseeable future. + if (bedColumns.length > 9) { + var geneId = featureOpts.geneName || bedColumns[9]; + var geneName = geneId; + if (bedColumns.length > 10) { + geneName = bedColumns[10]; + } + if (featureOpts.geneName2) + geneName = featureOpts.geneName2; + + var gg = $.extend({}, grp); + gg.id = geneId; + gg.label = geneName; + gg.type = 'gene'; + featureOpts.groups.push(gg); + } + + var spanList = []; + for (var b = 0; b < blockCount; ++b) { + var bmin = (blockStarts[b]|0) + start; + var bmax = bmin + (blockSizes[b]|0); + var span = new Range(bmin, bmax); + spanList.push(span); + } + var spans = union(spanList); + + var tsList = spans.ranges(); + for (var s = 0; s < tsList.length; ++s) { + var ts = tsList[s]; + createFeature(chromId, ts.min() + 1, ts.max(), featureOpts); + } + + if (thickEnd > thickStart) { + var codingRegion = (featureOpts.orientation == '+') ? + new Range(thickStart, thickEnd + 3) : + new Range(thickStart - 3, thickEnd); + // +/- 3 to account for stop codon + + var tl = intersection(spans, codingRegion); + if (tl) { + featureOpts.type = 'translation'; + var tlList = tl.ranges(); + var readingFrame = 0; + + var tlOffset = 0; + while (tlList[0].min() > tsList[tlOffset].max()) + tlOffset++; + + for (var s = 0; s < tlList.length; ++s) { + // Record reading frame for every exon + var index = s; + if (featureOpts.orientation == '-') + index = tlList.length - s - 1; + var ts = tlList[index]; + featureOpts.readframe = readingFrame; + if (exonFrames) { + var brf = parseInt(exonFrames[index + tlOffset]); + if (typeof(brf) === 'number' && brf >= 0 && brf <= 2) { + featureOpts.readframe = brf; + featureOpts.readframeExplicit = true; + } + } + var length = ts.max() - ts.min(); + readingFrame = (readingFrame + length) % 3; + createFeature(chromId, ts.min() + 1, ts.max(), featureOpts); + } + } + } + } + } + } + } else { + throw Error("Don't know what to do with " + this.bwg.type); + } + } + + // + // nasty cut/paste, should roll back in! + // + + BigWigView.prototype.getFirstAdjacent = function(chrName, pos, dir, callback) { + var chr = this.bwg.chromsToIDs[chrName]; + if (chr === undefined) { + // Not an error because some .bwgs won't have data for all chromosomes. + return callback([]); + } else { + this.getFirstAdjacentById(chr, pos, dir, callback); + } + } + + BigWigView.prototype.getFirstAdjacentById = function(chr, pos, dir, callback) { + var thisB = this; + if (!this.cirHeader) { + this.bwg.data.slice(this.cirTreeOffset, 48).fetch(function(result) { + thisB.cirHeader = result; + var la = new Int32Array(thisB.cirHeader); + thisB.cirBlockSize = la[1]; + thisB.getFirstAdjacentById(chr, pos, dir, callback); + }); + return; + } + + var blockToFetch = null; + var bestBlockChr = -1; + var bestBlockOffset = -1; + + var outstanding = 0; + + var beforeBWG = Date.now(); + + var cirFobRecur = function(offset, level) { + outstanding += offset.length; + + var maxCirBlockSpan = 4 + (thisB.cirBlockSize * 32); // Upper bound on size, based on a completely full leaf node. + var spans; + for (var i = 0; i < offset.length; ++i) { + var blockSpan = new Range(offset[i], offset[i] + maxCirBlockSpan); + spans = spans ? union(spans, blockSpan) : blockSpan; + } + + var fetchRanges = spans.ranges(); + for (var r = 0; r < fetchRanges.length; ++r) { + var fr = fetchRanges[r]; + cirFobStartFetch(offset, fr, level); + } + } + + var cirFobStartFetch = function(offset, fr, level, attempts) { + var length = fr.max() - fr.min(); + thisB.bwg.data.slice(fr.min(), fr.max() - fr.min()).fetch(function(resultBuffer) { + for (var i = 0; i < offset.length; ++i) { + if (fr.contains(offset[i])) { + cirFobRecur2(resultBuffer, offset[i] - fr.min(), level); + --outstanding; + if (outstanding == 0) { + if (!blockToFetch) { + if (dir > 0 && (chr != 0 || pos > 0)) { + return thisB.getFirstAdjacentById(0, 0, dir, callback); + } else if (dir < 0 && (chr != thisB.bwg.maxID || pos < 1000000000)) { + return thisB.getFirstAdjacentById(thisB.bwg.maxID, 1000000000, dir, callback); + } + return callback([]); + } + + thisB.fetchFeatures(function(chrx, fmin, fmax, toks) { + return (dir < 0 && (chrx < chr || fmax < pos)) || (dir > 0 && (chrx > chr || fmin > pos)); + }, [blockToFetch], function(features) { + var bestFeature = null; + var bestChr = -1; + var bestPos = -1; + for (var fi = 0; fi < features.length; ++fi) { + var f = features[fi]; + var chrx = f._chromId, fmin = f.min, fmax = f.max; + if (bestFeature == null || ((dir < 0) && (chrx > bestChr || fmax > bestPos)) || ((dir > 0) && (chrx < bestChr || fmin < bestPos))) { + bestFeature = f; + bestPos = (dir < 0) ? fmax : fmin; + bestChr = chrx; + } + } + + if (bestFeature != null) + return callback([bestFeature]); + else + return callback([]); + }); + } + } + } + }); + } + + var cirFobRecur2 = function(cirBlockData, offset, level) { + var ba = new Uint8Array(cirBlockData); + var sa = new Int16Array(cirBlockData); + var la = new Int32Array(cirBlockData); + + var isLeaf = ba[offset]; + var cnt = sa[offset/2 + 1]; + offset += 4; + + if (isLeaf != 0) { + for (var i = 0; i < cnt; ++i) { + var lo = offset/4; + var startChrom = la[lo]; + var startBase = la[lo + 1]; + var endChrom = la[lo + 2]; + var endBase = la[lo + 3]; + var blockOffset = bwg_readOffset(ba, offset+16); + var blockSize = bwg_readOffset(ba, offset+24); + if ((dir < 0 && ((startChrom < chr || (startChrom == chr && startBase <= pos)))) || + (dir > 0 && ((endChrom > chr || (endChrom == chr && endBase >= pos))))) + { + // console.log('Got an interesting block: startBase=' + startChrom + ':' + startBase + '; endBase=' + endChrom + ':' + endBase + '; offset=' + blockOffset + '; size=' + blockSize); + if (/_random/.exec(thisB.bwg.idsToChroms[startChrom])) { + // dlog('skipping random: ' + thisB.bwg.idsToChroms[startChrom]); + } else if (blockToFetch == null || ((dir < 0) && (endChrom > bestBlockChr || (endChrom == bestBlockChr && endBase > bestBlockOffset)) || + (dir > 0) && (startChrom < bestBlockChr || (startChrom == bestBlockChr && startBase < bestBlockOffset)))) + { + // dlog('best is: startBase=' + startChrom + ':' + startBase + '; endBase=' + endChrom + ':' + endBase + '; offset=' + blockOffset + '; size=' + blockSize); + blockToFetch = {offset: blockOffset, size: blockSize}; + bestBlockOffset = (dir < 0) ? endBase : startBase; + bestBlockChr = (dir < 0) ? endChrom : startChrom; + } + } + offset += 32; + } + } else { + var bestRecur = -1; + var bestPos = -1; + var bestChr = -1; + for (var i = 0; i < cnt; ++i) { + var lo = offset/4; + var startChrom = la[lo]; + var startBase = la[lo + 1]; + var endChrom = la[lo + 2]; + var endBase = la[lo + 3]; + var blockOffset = (la[lo + 4]<<32) | (la[lo + 5]); + if ((dir < 0 && ((startChrom < chr || (startChrom == chr && startBase <= pos)) && + (endChrom >= chr))) || + (dir > 0 && ((endChrom > chr || (endChrom == chr && endBase >= pos)) && + (startChrom <= chr)))) + { + if (bestRecur < 0 || endBase > bestPos) { + bestRecur = blockOffset; + bestPos = (dir < 0) ? endBase : startBase; + bestChr = (dir < 0) ? endChrom : startChrom; + } + } + offset += 24; + } + if (bestRecur >= 0) { + cirFobRecur([bestRecur], level + 1); + } + } + }; + + + cirFobRecur([thisB.cirTreeOffset + 48], 1); + } + + /** + * Automatically choose a zoom level and return data from that level. + */ + BigWig.prototype.readWigData = function(chrName, min, max) { + // Maximum number of data points to return when reading a bigwig. This is used + // to choose the appropriate level. One data point ~= 25-65 bytes. + // FIXME: For targeted sequencing, data points returned is going to be much lower, + // so this will need to be tuned appropriately. + var MAX_DATA_POINTS = 25000; + + var range = max - min, + view; + // If no zooming needed or available (common in bigbed), use unzoomed view. + if (range <= MAX_DATA_POINTS || this.zoomLevels.length === 0) { + view = this.getUnzoomedView(); + console.log("zoomLevel unzoomed"); + } + else { + // Find reasonable zoom level. Reduction is the # of bases represented + // by each data point at that level. + for (var i = 0; i < this.zoomLevels.length; i++) { + if (range/this.zoomLevels[i].reduction < MAX_DATA_POINTS) { + view = this.getZoomedView(i); + console.log("zoomLevel", i); + break; + } + } + } + + return view.readWigData(chrName, min, max); + } + + BigWig.prototype.getUnzoomedView = function() { + if (!this.unzoomedView) { + var cirLen = 4000; + var nzl = this.zoomLevels[0]; + if (nzl) { + cirLen = this.zoomLevels[0].dataOffset - this.unzoomedIndexOffset; + } + this.unzoomedView = new BigWigView(this, this.unzoomedIndexOffset, cirLen, false); + } + return this.unzoomedView; + } + + BigWig.prototype.getZoomedView = function(z) { + var zh = this.zoomLevels[z]; + if (!zh.view) { + zh.view = new BigWigView(this, zh.indexOffset, /* this.zoomLevels[z + 1].dataOffset - zh.indexOffset */ 4000, true); + } + return zh.view; + } + + /** + * Create a BigWig object using a URL to a bigwig/bigbed file. Returns a promise + * that resolves to the object when it's available. + */ + function makeBwg(url) { + var promise = $.Deferred(), + bwg = new BigWig(); + bwg.url = url; + + // Read and parse bigwig header, including chrom tree. + $.when(read(bwg.url, 0, 512)).then(function(result) { + if (!result) { + return promise.resolve(null, "Couldn't fetch file"); + } + + var header = result; + var ba = new Uint8Array(header); + var sa = new Int16Array(header); + var la = new Int32Array(header); + var magic = ba[0] + (M1 * ba[1]) + (M2 * ba[2]) + (M3 * ba[3]); + if (magic == BIG_WIG_MAGIC) { + bwg.type = 'bigwig'; + } else if (magic == BIG_BED_MAGIC) { + bwg.type = 'bigbed'; + } else if (magic == BIG_WIG_MAGIC_BE || magic == BIG_BED_MAGIC_BE) { + return promise.resolve(null, "Currently don't support big-endian BBI files"); + + } else { + return promise.resolve(null, "Not a supported format, magic=0x" + magic.toString(16)); + + } + + bwg.version = sa[2]; // 4 + bwg.numZoomLevels = sa[3]; // 6 + bwg.chromTreeOffset = bwg_readOffset(ba, 8); + bwg.unzoomedDataOffset = bwg_readOffset(ba, 16); + bwg.unzoomedIndexOffset = bwg_readOffset(ba, 24); + bwg.fieldCount = sa[16]; // 32 + bwg.definedFieldCount = sa[17]; // 34 + bwg.asOffset = bwg_readOffset(ba, 36); + bwg.totalSummaryOffset = bwg_readOffset(ba, 44); + bwg.uncompressBufSize = la[13]; // 52 + bwg.extHeaderOffset = bwg_readOffset(ba, 56); + + bwg.zoomLevels = []; + for (var zl = 0; zl < bwg.numZoomLevels; ++zl) { + var zlReduction = la[zl*6 + 16] + var zlData = bwg_readOffset(ba, zl*24 + 72); + var zlIndex = bwg_readOffset(ba, zl*24 + 80); + bwg.zoomLevels.push({reduction: zlReduction, dataOffset: zlData, indexOffset: zlIndex}); + } + + $.when(bwg.readChromTree()).then(function() { + bwg.getAutoSQL(function(as) { + bwg.schema = as; + return promise.resolve(bwg); + }); + }); + }); + + return promise; + } + + + BigWig.prototype._tsFetch = function(zoom, chr, min, max, callback) { + var bwg = this; + if (zoom >= this.zoomLevels.length - 1) { + if (!this.topLevelReductionCache) { + this.getZoomedView(this.zoomLevels.length - 1).readWigDataById(-1, 0, 300000000, function(feats) { + bwg.topLevelReductionCache = feats; + return bwg._tsFetch(zoom, chr, min, max, callback); + }); + } else { + var f = []; + var c = this.topLevelReductionCache; + for (var fi = 0; fi < c.length; ++fi) { + if (c[fi]._chromId == chr) { + f.push(c[fi]); + } + } + return callback(f); + } + } else { + var view; + if (zoom < 0) { + view = this.getUnzoomedView(); + } else { + view = this.getZoomedView(zoom); + } + return view.readWigDataById(chr, min, max, callback); + } + } + + BigWig.prototype.thresholdSearch = function(chrName, referencePoint, dir, threshold, callback) { + dir = (dir<0) ? -1 : 1; + var bwg = this; + var initialChr = this.chromsToIDs[chrName]; + var candidates = [{chrOrd: 0, chr: initialChr, zoom: bwg.zoomLevels.length - 4, min: 0, max: 300000000, fromRef: true}] + for (var i = 1; i <= this.maxID + 1; ++i) { + var chrId = (initialChr + (dir*i)) % (this.maxID + 1); + if (chrId < 0) + chrId += (this.maxID + 1); + candidates.push({chrOrd: i, chr: chrId, zoom: bwg.zoomLevels.length - 1, min: 0, max: 300000000}) + } + + function fbThresholdSearchRecur() { + if (candidates.length == 0) { + return callback(null); + } + candidates.sort(function(c1, c2) { + var d = c1.zoom - c2.zoom; + if (d != 0) + return d; + + d = c1.chrOrd - c2.chrOrd; + if (d != 0) + return d; + else + return c1.min - c2.min * dir; + }); + + var candidate = candidates.splice(0, 1)[0]; + bwg._tsFetch(candidate.zoom, candidate.chr, candidate.min, candidate.max, function(feats) { + var rp = dir > 0 ? 0 : 300000000; + if (candidate.fromRef) + rp = referencePoint; + + for (var fi = 0; fi < feats.length; ++fi) { + var f = feats[fi]; + var score; + if (f.maxScore != undefined) + score = f.maxScore; + else + score = f.score; + + if (dir > 0) { + if (score > threshold) { + if (candidate.zoom < 0) { + if (f.min > rp) + return callback(f); + } else if (f.max > rp) { + candidates.push({chr: candidate.chr, chrOrd: candidate.chrOrd, zoom: candidate.zoom - 2, min: f.min, max: f.max, fromRef: candidate.fromRef}); + } + } + } else { + if (score > threshold) { + if (candidate.zoom < 0) { + if (f.max < rp) + return callback(f); + } else if (f.min < rp) { + candidates.push({chr: candidate.chr, chrOrd: candidate.chrOrd, zoom: candidate.zoom - 2, min: f.min, max: f.max, fromRef: candidate.fromRef}); + } + } + } + } + fbThresholdSearchRecur(); + }); + } + + fbThresholdSearchRecur(); + } + + BigWig.prototype.getAutoSQL = function(callback) { + var thisB = this; + if (!this.asOffset) + return callback(null); + + $.when(read(this.url, this.asOffset, 2048)).then(function(result) { + var ba = new Uint8Array(result); + var s = ''; + for (var i = 0; i < ba.length; ++i) { + if (ba[i] == 0) + break; + s += String.fromCharCode(ba[i]); + } + + /* + * Quick'n'dirty attempt to parse autoSql format. + * See: http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/059/5949/5949l2.html + */ + + var header_re = /(\w+)\s+(\w+)\s+("([^"]+)")?\s+\(\s*/; + var field_re = /([\w\[\]]+)\s+(\w+)\s*;\s*("([^"]+)")?\s*/g; + + var headerMatch = header_re.exec(s); + if (headerMatch) { + var as = { + declType: headerMatch[1], + name: headerMatch[2], + comment: headerMatch[4], + + fields: [] + }; + + s = s.substring(headerMatch[0]); + for (var m = field_re.exec(s); m != null; m = field_re.exec(s)) { + as.fields.push({type: m[1], + name: m[2], + comment: m[4]}); + } + + return callback(as); + } + }); + }; + + BigWig.prototype.getExtraIndices = function(callback) { + var thisB = this; + if (this.version < 4 || this.extHeaderOffset == 0 || this.type != 'bigbed') { + return callback(null); + } else { + this.data.slice(this.extHeaderOffset, 64).fetch(function(result) { + if (!result) { + return callback(null, "Couldn't fetch extension header"); + } + + var ba = new Uint8Array(result); + var sa = new Int16Array(result); + var la = new Int32Array(result); + + var extHeaderSize = sa[0]; + var extraIndexCount = sa[1]; + var extraIndexListOffset = bwg_readOffset(ba, 4); + + if (extraIndexCount == 0) { + return callback(null); + } + + // FIXME 20byte records only make sense for single-field indices. + // Right now, these seem to be the only things around, but the format + // is actually more general. + thisB.data.slice(extraIndexListOffset, extraIndexCount * 20).fetch(function(eil) { + if (!eil) { + return callback(null, "Couldn't fetch index info"); + } + + var ba = new Uint8Array(eil); + var sa = new Int16Array(eil); + var la = new Int32Array(eil); + + var indices = []; + for (var ii = 0; ii < extraIndexCount; ++ii) { + var eiType = sa[ii*10]; + var eiFieldCount = sa[ii*10 + 1]; + var eiOffset = bwg_readOffset(ba, ii*20 + 4); + var eiField = sa[ii*10 + 8] + var index = new BBIExtraIndex(thisB, eiType, eiFieldCount, eiOffset, eiField); + indices.push(index); + } + callback(indices); + }); + }); + } + } + + function BBIExtraIndex(bbi, type, fieldCount, offset, field) { + this.bbi = bbi; + this.type = type; + this.fieldCount = fieldCount; + this.offset = offset; + this.field = field; + } + + BBIExtraIndex.prototype.lookup = function(name, callback) { + var thisB = this; + + this.bbi.data.slice(this.offset, 32).fetch(function(bpt) { + var ba = new Uint8Array(bpt); + var sa = new Int16Array(bpt); + var la = new Int32Array(bpt); + var bptMagic = la[0]; + var blockSize = la[1]; + var keySize = la[2]; + var valSize = la[3]; + var itemCount = bwg_readOffset(ba, 16); + var rootNodeOffset = 32; + + function bptReadNode(nodeOffset) { + thisB.bbi.data.slice(nodeOffset, 4 + (blockSize * (keySize + valSize))).fetch(function(node) { + var ba = new Uint8Array(node); + var sa = new Uint16Array(node); + var la = new Uint32Array(node); + + var nodeType = ba[0]; + var cnt = sa[1]; + + var offset = 4; + if (nodeType == 0) { + var lastChildOffset = null; + for (var n = 0; n < cnt; ++n) { + var key = ''; + for (var ki = 0; ki < keySize; ++ki) { + var charCode = ba[offset++]; + if (charCode != 0) { + key += String.fromCharCode(charCode); + } + } + + var childOffset = bwg_readOffset(ba, offset); + offset += 8; + + if (name.localeCompare(key) < 0 && lastChildOffset) { + bptReadNode(lastChildOffset); + return; + } + lastChildOffset = childOffset; + } + bptReadNode(lastChildOffset); + } else { + for (var n = 0; n < cnt; ++n) { + var key = ''; + for (var ki = 0; ki < keySize; ++ki) { + var charCode = ba[offset++]; + if (charCode != 0) { + key += String.fromCharCode(charCode); + } + } + + // Specific for EI case. + if (key == name) { + var start = bwg_readOffset(ba, offset); + var length = readInt(ba, offset + 8); + + return thisB.bbi.getUnzoomedView().fetchFeatures( + function(chr, min, max, toks) { + if (toks && toks.length > thisB.field - 3) + return toks[thisB.field - 3] == name; + }, + [{offset: start, size: length}], + callback); + } + offset += valSize; + } + return callback([]); + } + }); + } + + bptReadNode(thisB.offset + rootNodeOffset); + }); + } + + return { + makeBwg: makeBwg + }; +}); diff --git a/client/galaxy/scripts/libs/bbi/jquery-ajax-native.js b/client/galaxy/scripts/libs/bbi/jquery-ajax-native.js new file mode 100644 index 00000000000..557027072f9 --- /dev/null +++ b/client/galaxy/scripts/libs/bbi/jquery-ajax-native.js @@ -0,0 +1,157 @@ +// jQuery Ajax Native Plugin + +// (c) 2015 Tarik Zakaria Benmerar, Acigna Inc. +// jQuery Ajax Native Plugin may be freely distributed under the MIT license. +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(require('jquery')); + } else { + // Browser globals (root is window) + factory(root.jQuery); + } +}(this, function ( $ ) { + var ajaxSettings = $.ajaxSettings; + ajaxSettings.responseFields.native = 'responseNative'; + ajaxSettings.converters[ '* native' ] = true; + var support = {}, + xhrId = 0, + xhrSuccessStatus = { + // file protocol always yields status code 0, assume 200 + 0: 200, + // Support: IE9 + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrCallbacks = {}, + xhrSupported = jQuery.ajaxSettings.xhr(); + // Support: IE9 + // Open requests must be manually aborted on unload (#5280) + if ( window.ActiveXObject ) { + $( window ).on( "unload", function() { + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ](); + } + }); + } + support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); + support.ajax = xhrSupported = !!xhrSupported; + + //Native Data Type Ajax Transport + $.ajaxTransport('native', function ( options ) { + var callback; + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(), + id = ++xhrId, + responses = {}; + + xhr.open( options.type, options.url, options.async, options.username, options.password ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers["X-Requested-With"] ) { + headers["X-Requested-With"] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + delete xhrCallbacks[ id ]; + callback = xhr.onload = xhr.onerror = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + complete( + // file: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } else { + // The native response associated with the responseType + // Stored in the xhr.response attribute (XHR2 Spec) + if ( xhr.response ) { + responses.native = xhr.response; + } + + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + responses, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + xhr.onerror = callback("error"); + + // Create the abort callback + callback = xhrCallbacks[ id ] = callback("abort"); + + try { + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } + }); + + + //$.getNative wrapper + $.getNative = function ( url, callback ) { + return $.ajax({ + dataType: 'native', + url: url, + xhrFields: { + responseType: 'arraybuffer' + }, + success: callback + }); + } +})); diff --git a/client/galaxy/scripts/libs/bbi/jszlib.js b/client/galaxy/scripts/libs/bbi/jszlib.js new file mode 100644 index 00000000000..1274c479e9b --- /dev/null +++ b/client/galaxy/scripts/libs/bbi/jszlib.js @@ -0,0 +1,2163 @@ +/* -*- mode: javascript; c-basic-offset: 4; indent-tabs-mode: nil -*- */ + +// +// Javascript ZLib +// By Thomas Down 2010-2011 +// +// Based very heavily on portions of jzlib (by ymnk@jcraft.com), who in +// turn credits Jean-loup Gailly and Mark Adler for the original zlib code. +// +// inflate.js: ZLib inflate code +// + +// +// Shared constants +// + +define([],function() { + +var MAX_WBITS=15; // 32K LZ77 window +var DEF_WBITS=MAX_WBITS; +var MAX_MEM_LEVEL=9; +var MANY=1440; +var BMAX = 15; + +// preset dictionary flag in zlib header +var PRESET_DICT=0x20; + +var Z_NO_FLUSH=0; +var Z_PARTIAL_FLUSH=1; +var Z_SYNC_FLUSH=2; +var Z_FULL_FLUSH=3; +var Z_FINISH=4; + +var Z_DEFLATED=8; + +var Z_OK=0; +var Z_STREAM_END=1; +var Z_NEED_DICT=2; +var Z_ERRNO=-1; +var Z_STREAM_ERROR=-2; +var Z_DATA_ERROR=-3; +var Z_MEM_ERROR=-4; +var Z_BUF_ERROR=-5; +var Z_VERSION_ERROR=-6; + +var METHOD=0; // waiting for method byte +var FLAG=1; // waiting for flag byte +var DICT4=2; // four dictionary check bytes to go +var DICT3=3; // three dictionary check bytes to go +var DICT2=4; // two dictionary check bytes to go +var DICT1=5; // one dictionary check byte to go +var DICT0=6; // waiting for inflateSetDictionary +var BLOCKS=7; // decompressing blocks +var CHECK4=8; // four check bytes to go +var CHECK3=9; // three check bytes to go +var CHECK2=10; // two check bytes to go +var CHECK1=11; // one check byte to go +var DONE=12; // finished check, done +var BAD=13; // got an error--stay here + +var inflate_mask = [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]; + +var IB_TYPE=0; // get type bits (3, including end bit) +var IB_LENS=1; // get lengths for stored +var IB_STORED=2;// processing stored block +var IB_TABLE=3; // get table lengths +var IB_BTREE=4; // get bit lengths tree for a dynamic block +var IB_DTREE=5; // get length, distance trees for a dynamic block +var IB_CODES=6; // processing fixed or dynamic block +var IB_DRY=7; // output remaining window bytes +var IB_DONE=8; // finished last block, done +var IB_BAD=9; // ot a data error--stuck here + +var fixed_bl = 9; +var fixed_bd = 5; + +var fixed_tl = [ + 96,7,256, 0,8,80, 0,8,16, 84,8,115, + 82,7,31, 0,8,112, 0,8,48, 0,9,192, + 80,7,10, 0,8,96, 0,8,32, 0,9,160, + 0,8,0, 0,8,128, 0,8,64, 0,9,224, + 80,7,6, 0,8,88, 0,8,24, 0,9,144, + 83,7,59, 0,8,120, 0,8,56, 0,9,208, + 81,7,17, 0,8,104, 0,8,40, 0,9,176, + 0,8,8, 0,8,136, 0,8,72, 0,9,240, + 80,7,4, 0,8,84, 0,8,20, 85,8,227, + 83,7,43, 0,8,116, 0,8,52, 0,9,200, + 81,7,13, 0,8,100, 0,8,36, 0,9,168, + 0,8,4, 0,8,132, 0,8,68, 0,9,232, + 80,7,8, 0,8,92, 0,8,28, 0,9,152, + 84,7,83, 0,8,124, 0,8,60, 0,9,216, + 82,7,23, 0,8,108, 0,8,44, 0,9,184, + 0,8,12, 0,8,140, 0,8,76, 0,9,248, + 80,7,3, 0,8,82, 0,8,18, 85,8,163, + 83,7,35, 0,8,114, 0,8,50, 0,9,196, + 81,7,11, 0,8,98, 0,8,34, 0,9,164, + 0,8,2, 0,8,130, 0,8,66, 0,9,228, + 80,7,7, 0,8,90, 0,8,26, 0,9,148, + 84,7,67, 0,8,122, 0,8,58, 0,9,212, + 82,7,19, 0,8,106, 0,8,42, 0,9,180, + 0,8,10, 0,8,138, 0,8,74, 0,9,244, + 80,7,5, 0,8,86, 0,8,22, 192,8,0, + 83,7,51, 0,8,118, 0,8,54, 0,9,204, + 81,7,15, 0,8,102, 0,8,38, 0,9,172, + 0,8,6, 0,8,134, 0,8,70, 0,9,236, + 80,7,9, 0,8,94, 0,8,30, 0,9,156, + 84,7,99, 0,8,126, 0,8,62, 0,9,220, + 82,7,27, 0,8,110, 0,8,46, 0,9,188, + 0,8,14, 0,8,142, 0,8,78, 0,9,252, + 96,7,256, 0,8,81, 0,8,17, 85,8,131, + 82,7,31, 0,8,113, 0,8,49, 0,9,194, + 80,7,10, 0,8,97, 0,8,33, 0,9,162, + 0,8,1, 0,8,129, 0,8,65, 0,9,226, + 80,7,6, 0,8,89, 0,8,25, 0,9,146, + 83,7,59, 0,8,121, 0,8,57, 0,9,210, + 81,7,17, 0,8,105, 0,8,41, 0,9,178, + 0,8,9, 0,8,137, 0,8,73, 0,9,242, + 80,7,4, 0,8,85, 0,8,21, 80,8,258, + 83,7,43, 0,8,117, 0,8,53, 0,9,202, + 81,7,13, 0,8,101, 0,8,37, 0,9,170, + 0,8,5, 0,8,133, 0,8,69, 0,9,234, + 80,7,8, 0,8,93, 0,8,29, 0,9,154, + 84,7,83, 0,8,125, 0,8,61, 0,9,218, + 82,7,23, 0,8,109, 0,8,45, 0,9,186, + 0,8,13, 0,8,141, 0,8,77, 0,9,250, + 80,7,3, 0,8,83, 0,8,19, 85,8,195, + 83,7,35, 0,8,115, 0,8,51, 0,9,198, + 81,7,11, 0,8,99, 0,8,35, 0,9,166, + 0,8,3, 0,8,131, 0,8,67, 0,9,230, + 80,7,7, 0,8,91, 0,8,27, 0,9,150, + 84,7,67, 0,8,123, 0,8,59, 0,9,214, + 82,7,19, 0,8,107, 0,8,43, 0,9,182, + 0,8,11, 0,8,139, 0,8,75, 0,9,246, + 80,7,5, 0,8,87, 0,8,23, 192,8,0, + 83,7,51, 0,8,119, 0,8,55, 0,9,206, + 81,7,15, 0,8,103, 0,8,39, 0,9,174, + 0,8,7, 0,8,135, 0,8,71, 0,9,238, + 80,7,9, 0,8,95, 0,8,31, 0,9,158, + 84,7,99, 0,8,127, 0,8,63, 0,9,222, + 82,7,27, 0,8,111, 0,8,47, 0,9,190, + 0,8,15, 0,8,143, 0,8,79, 0,9,254, + 96,7,256, 0,8,80, 0,8,16, 84,8,115, + 82,7,31, 0,8,112, 0,8,48, 0,9,193, + + 80,7,10, 0,8,96, 0,8,32, 0,9,161, + 0,8,0, 0,8,128, 0,8,64, 0,9,225, + 80,7,6, 0,8,88, 0,8,24, 0,9,145, + 83,7,59, 0,8,120, 0,8,56, 0,9,209, + 81,7,17, 0,8,104, 0,8,40, 0,9,177, + 0,8,8, 0,8,136, 0,8,72, 0,9,241, + 80,7,4, 0,8,84, 0,8,20, 85,8,227, + 83,7,43, 0,8,116, 0,8,52, 0,9,201, + 81,7,13, 0,8,100, 0,8,36, 0,9,169, + 0,8,4, 0,8,132, 0,8,68, 0,9,233, + 80,7,8, 0,8,92, 0,8,28, 0,9,153, + 84,7,83, 0,8,124, 0,8,60, 0,9,217, + 82,7,23, 0,8,108, 0,8,44, 0,9,185, + 0,8,12, 0,8,140, 0,8,76, 0,9,249, + 80,7,3, 0,8,82, 0,8,18, 85,8,163, + 83,7,35, 0,8,114, 0,8,50, 0,9,197, + 81,7,11, 0,8,98, 0,8,34, 0,9,165, + 0,8,2, 0,8,130, 0,8,66, 0,9,229, + 80,7,7, 0,8,90, 0,8,26, 0,9,149, + 84,7,67, 0,8,122, 0,8,58, 0,9,213, + 82,7,19, 0,8,106, 0,8,42, 0,9,181, + 0,8,10, 0,8,138, 0,8,74, 0,9,245, + 80,7,5, 0,8,86, 0,8,22, 192,8,0, + 83,7,51, 0,8,118, 0,8,54, 0,9,205, + 81,7,15, 0,8,102, 0,8,38, 0,9,173, + 0,8,6, 0,8,134, 0,8,70, 0,9,237, + 80,7,9, 0,8,94, 0,8,30, 0,9,157, + 84,7,99, 0,8,126, 0,8,62, 0,9,221, + 82,7,27, 0,8,110, 0,8,46, 0,9,189, + 0,8,14, 0,8,142, 0,8,78, 0,9,253, + 96,7,256, 0,8,81, 0,8,17, 85,8,131, + 82,7,31, 0,8,113, 0,8,49, 0,9,195, + 80,7,10, 0,8,97, 0,8,33, 0,9,163, + 0,8,1, 0,8,129, 0,8,65, 0,9,227, + 80,7,6, 0,8,89, 0,8,25, 0,9,147, + 83,7,59, 0,8,121, 0,8,57, 0,9,211, + 81,7,17, 0,8,105, 0,8,41, 0,9,179, + 0,8,9, 0,8,137, 0,8,73, 0,9,243, + 80,7,4, 0,8,85, 0,8,21, 80,8,258, + 83,7,43, 0,8,117, 0,8,53, 0,9,203, + 81,7,13, 0,8,101, 0,8,37, 0,9,171, + 0,8,5, 0,8,133, 0,8,69, 0,9,235, + 80,7,8, 0,8,93, 0,8,29, 0,9,155, + 84,7,83, 0,8,125, 0,8,61, 0,9,219, + 82,7,23, 0,8,109, 0,8,45, 0,9,187, + 0,8,13, 0,8,141, 0,8,77, 0,9,251, + 80,7,3, 0,8,83, 0,8,19, 85,8,195, + 83,7,35, 0,8,115, 0,8,51, 0,9,199, + 81,7,11, 0,8,99, 0,8,35, 0,9,167, + 0,8,3, 0,8,131, 0,8,67, 0,9,231, + 80,7,7, 0,8,91, 0,8,27, 0,9,151, + 84,7,67, 0,8,123, 0,8,59, 0,9,215, + 82,7,19, 0,8,107, 0,8,43, 0,9,183, + 0,8,11, 0,8,139, 0,8,75, 0,9,247, + 80,7,5, 0,8,87, 0,8,23, 192,8,0, + 83,7,51, 0,8,119, 0,8,55, 0,9,207, + 81,7,15, 0,8,103, 0,8,39, 0,9,175, + 0,8,7, 0,8,135, 0,8,71, 0,9,239, + 80,7,9, 0,8,95, 0,8,31, 0,9,159, + 84,7,99, 0,8,127, 0,8,63, 0,9,223, + 82,7,27, 0,8,111, 0,8,47, 0,9,191, + 0,8,15, 0,8,143, 0,8,79, 0,9,255 +]; +var fixed_td = [ + 80,5,1, 87,5,257, 83,5,17, 91,5,4097, + 81,5,5, 89,5,1025, 85,5,65, 93,5,16385, + 80,5,3, 88,5,513, 84,5,33, 92,5,8193, + 82,5,9, 90,5,2049, 86,5,129, 192,5,24577, + 80,5,2, 87,5,385, 83,5,25, 91,5,6145, + 81,5,7, 89,5,1537, 85,5,97, 93,5,24577, + 80,5,4, 88,5,769, 84,5,49, 92,5,12289, + 82,5,13, 90,5,3073, 86,5,193, 192,5,24577 +]; + + // Tables for deflate from PKZIP's appnote.txt. + var cplens = [ // Copy lengths for literal codes 257..285 + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 + ]; + + // see note #13 above about 258 + var cplext = [ // Extra bits for literal codes 257..285 + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112 // 112==invalid + ]; + + var cpdist = [ // Copy offsets for distance codes 0..29 + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, + 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, + 8193, 12289, 16385, 24577 + ]; + + var cpdext = [ // Extra bits for distance codes + 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, + 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, + 12, 12, 13, 13]; + +// +// ZStream.java +// + +function ZStream() { +} + + +ZStream.prototype.inflateInit = function(w, nowrap) { + if (!w) { + w = DEF_WBITS; + } + if (nowrap) { + nowrap = false; + } + this.istate = new Inflate(); + return this.istate.inflateInit(this, nowrap?-w:w); +} + +ZStream.prototype.inflate = function(f) { + if(this.istate==null) return Z_STREAM_ERROR; + return this.istate.inflate(this, f); +} + +ZStream.prototype.inflateEnd = function(){ + if(this.istate==null) return Z_STREAM_ERROR; + var ret=istate.inflateEnd(this); + this.istate = null; + return ret; +} +ZStream.prototype.inflateSync = function(){ + // if(istate == null) return Z_STREAM_ERROR; + return istate.inflateSync(this); +} +ZStream.prototype.inflateSetDictionary = function(dictionary, dictLength){ + // if(istate == null) return Z_STREAM_ERROR; + return istate.inflateSetDictionary(this, dictionary, dictLength); +} + +/* + + public int deflateInit(int level){ + return deflateInit(level, MAX_WBITS); + } + public int deflateInit(int level, boolean nowrap){ + return deflateInit(level, MAX_WBITS, nowrap); + } + public int deflateInit(int level, int bits){ + return deflateInit(level, bits, false); + } + public int deflateInit(int level, int bits, boolean nowrap){ + dstate=new Deflate(); + return dstate.deflateInit(this, level, nowrap?-bits:bits); + } + public int deflate(int flush){ + if(dstate==null){ + return Z_STREAM_ERROR; + } + return dstate.deflate(this, flush); + } + public int deflateEnd(){ + if(dstate==null) return Z_STREAM_ERROR; + int ret=dstate.deflateEnd(); + dstate=null; + return ret; + } + public int deflateParams(int level, int strategy){ + if(dstate==null) return Z_STREAM_ERROR; + return dstate.deflateParams(this, level, strategy); + } + public int deflateSetDictionary (byte[] dictionary, int dictLength){ + if(dstate == null) + return Z_STREAM_ERROR; + return dstate.deflateSetDictionary(this, dictionary, dictLength); + } + +*/ + +/* + // Flush as much pending output as possible. All deflate() output goes + // through this function so some applications may wish to modify it + // to avoid allocating a large strm->next_out buffer and copying into it. + // (See also read_buf()). + void flush_pending(){ + int len=dstate.pending; + + if(len>avail_out) len=avail_out; + if(len==0) return; + + if(dstate.pending_buf.length<=dstate.pending_out || + next_out.length<=next_out_index || + dstate.pending_buf.length<(dstate.pending_out+len) || + next_out.length<(next_out_index+len)){ + System.out.println(dstate.pending_buf.length+", "+dstate.pending_out+ + ", "+next_out.length+", "+next_out_index+", "+len); + System.out.println("avail_out="+avail_out); + } + + System.arraycopy(dstate.pending_buf, dstate.pending_out, + next_out, next_out_index, len); + + next_out_index+=len; + dstate.pending_out+=len; + total_out+=len; + avail_out-=len; + dstate.pending-=len; + if(dstate.pending==0){ + dstate.pending_out=0; + } + } + + // Read a new buffer from the current input stream, update the adler32 + // and total number of bytes read. All deflate() input goes through + // this function so some applications may wish to modify it to avoid + // allocating a large strm->next_in buffer and copying from it. + // (See also flush_pending()). + int read_buf(byte[] buf, int start, int size) { + int len=avail_in; + + if(len>size) len=size; + if(len==0) return 0; + + avail_in-=len; + + if(dstate.noheader==0) { + adler=_adler.adler32(adler, next_in, next_in_index, len); + } + System.arraycopy(next_in, next_in_index, buf, start, len); + next_in_index += len; + total_in += len; + return len; + } + + public void free(){ + next_in=null; + next_out=null; + msg=null; + _adler=null; + } +} +*/ + + +// +// Inflate.java +// + +function Inflate() { + this.was = [0]; +} + +Inflate.prototype.inflateReset = function(z) { + if(z == null || z.istate == null) return Z_STREAM_ERROR; + + z.total_in = z.total_out = 0; + z.msg = null; + z.istate.mode = z.istate.nowrap!=0 ? BLOCKS : METHOD; + z.istate.blocks.reset(z, null); + return Z_OK; +} + +Inflate.prototype.inflateEnd = function(z){ + if(this.blocks != null) + this.blocks.free(z); + this.blocks=null; + return Z_OK; +} + +Inflate.prototype.inflateInit = function(z, w){ + z.msg = null; + this.blocks = null; + + // handle undocumented nowrap option (no zlib header or check) + nowrap = 0; + if(w < 0){ + w = - w; + nowrap = 1; + } + + // set window size + if(w<8 ||w>15){ + this.inflateEnd(z); + return Z_STREAM_ERROR; + } + this.wbits=w; + + z.istate.blocks=new InfBlocks(z, + z.istate.nowrap!=0 ? null : this, + 1<>4)+8>z.istate.wbits){ + z.istate.mode = BAD; + z.msg="invalid window size"; + z.istate.marker = 5; // can't try inflateSync + break; + } + z.istate.mode=FLAG; + case FLAG: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + b = (z.next_in[z.next_in_index++])&0xff; + + if((((z.istate.method << 8)+b) % 31)!=0){ + z.istate.mode = BAD; + z.msg = "incorrect header check"; + z.istate.marker = 5; // can't try inflateSync + break; + } + + if((b&PRESET_DICT)==0){ + z.istate.mode = BLOCKS; + break; + } + z.istate.mode = DICT4; + case DICT4: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need=((z.next_in[z.next_in_index++]&0xff)<<24)&0xff000000; + z.istate.mode=DICT3; + case DICT3: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<16)&0xff0000; + z.istate.mode=DICT2; + case DICT2: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<8)&0xff00; + z.istate.mode=DICT1; + case DICT1: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need += (z.next_in[z.next_in_index++]&0xff); + z.adler = z.istate.need; + z.istate.mode = DICT0; + return Z_NEED_DICT; + case DICT0: + z.istate.mode = BAD; + z.msg = "need dictionary"; + z.istate.marker = 0; // can try inflateSync + return Z_STREAM_ERROR; + case BLOCKS: + + r = z.istate.blocks.proc(z, r); + if(r == Z_DATA_ERROR){ + z.istate.mode = BAD; + z.istate.marker = 0; // can try inflateSync + break; + } + if(r == Z_OK){ + r = f; + } + if(r != Z_STREAM_END){ + return r; + } + r = f; + z.istate.blocks.reset(z, z.istate.was); + if(z.istate.nowrap!=0){ + z.istate.mode=DONE; + break; + } + z.istate.mode=CHECK4; + case CHECK4: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need=((z.next_in[z.next_in_index++]&0xff)<<24)&0xff000000; + z.istate.mode=CHECK3; + case CHECK3: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<16)&0xff0000; + z.istate.mode = CHECK2; + case CHECK2: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need+=((z.next_in[z.next_in_index++]&0xff)<<8)&0xff00; + z.istate.mode = CHECK1; + case CHECK1: + + if(z.avail_in==0)return r;r=f; + + z.avail_in--; z.total_in++; + z.istate.need+=(z.next_in[z.next_in_index++]&0xff); + + if(((z.istate.was[0])) != ((z.istate.need))){ + z.istate.mode = BAD; + z.msg = "incorrect data check"; + z.istate.marker = 5; // can't try inflateSync + break; + } + + z.istate.mode = DONE; + case DONE: + return Z_STREAM_END; + case BAD: + return Z_DATA_ERROR; + default: + return Z_STREAM_ERROR; + } + } + } + + +Inflate.prototype.inflateSetDictionary = function(z, dictionary, dictLength) { + var index=0; + var length = dictLength; + if(z==null || z.istate == null|| z.istate.mode != DICT0) + return Z_STREAM_ERROR; + + if(z._adler.adler32(1, dictionary, 0, dictLength)!=z.adler){ + return Z_DATA_ERROR; + } + + z.adler = z._adler.adler32(0, null, 0, 0); + + if(length >= (1<>> 1){ + case 0: // stored + {b>>>=(3);k-=(3);} + t = k & 7; // go to byte boundary + + {b>>>=(t);k-=(t);} + this.mode = IB_LENS; // get length of stored block + break; + case 1: // fixed + { + var bl=new Int32Array(1); + var bd=new Int32Array(1); + var tl=[]; + var td=[]; + + inflate_trees_fixed(bl, bd, tl, td, z); + this.codes.init(bl[0], bd[0], tl[0], 0, td[0], 0, z); + } + + {b>>>=(3);k-=(3);} + + this.mode = IB_CODES; + break; + case 2: // dynamic + + {b>>>=(3);k-=(3);} + + this.mode = IB_TABLE; + break; + case 3: // illegal + + {b>>>=(3);k-=(3);} + this.mode = BAD; + z.msg = "invalid block type"; + r = Z_DATA_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + } + break; + case IB_LENS: + while(k<(32)){ + if(n!=0){ + r=Z_OK; + } + else{ + this.bitb=b; this.bitk=k; + z.avail_in=n; + z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + }; + n--; + b|=(z.next_in[p++]&0xff)<>> 16) & 0xffff) != (b & 0xffff)){ + this.mode = BAD; + z.msg = "invalid stored block lengths"; + r = Z_DATA_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + } + this.left = (b & 0xffff); + b = k = 0; // dump bits + this.mode = this.left!=0 ? IB_STORED : (this.last!=0 ? IB_DRY : IB_TYPE); + break; + case IB_STORED: + if (n == 0){ + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + write=q; + return this.inflate_flush(z,r); + } + + if(m==0){ + if(q==end&&read!=0){ + q=0; m=(qn) t = n; + if(t>m) t = m; + arrayCopy(z.next_in, p, this.window, q, t); + p += t; n -= t; + q += t; m -= t; + if ((this.left -= t) != 0) + break; + this.mode = (this.last != 0 ? IB_DRY : IB_TYPE); + break; + case IB_TABLE: + + while(k<(14)){ + if(n!=0){ + r=Z_OK; + } + else{ + this.bitb=b; this.bitk=k; + z.avail_in=n; + z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + }; + n--; + b|=(z.next_in[p++]&0xff)< 29 || ((t >> 5) & 0x1f) > 29) + { + this.mode = IB_BAD; + z.msg = "too many length or distance symbols"; + r = Z_DATA_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + } + t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); + if(this.blens==null || this.blens.length>>=(14);k-=(14);} + + this.index = 0; + mode = IB_BTREE; + case IB_BTREE: + while (this.index < 4 + (this.table >>> 10)){ + while(k<(3)){ + if(n!=0){ + r=Z_OK; + } + else{ + this.bitb=b; this.bitk=k; + z.avail_in=n; + z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + }; + n--; + b|=(z.next_in[p++]&0xff)<>>=(3);k-=(3);} + } + + while(this.index < 19){ + this.blens[INFBLOCKS_BORDER[this.index++]] = 0; + } + + this.bb[0] = 7; + t = this.inftree.inflate_trees_bits(this.blens, this.bb, this.tb, this.hufts, z); + if (t != Z_OK){ + r = t; + if (r == Z_DATA_ERROR){ + this.blens=null; + this.mode = IB_BAD; + } + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + write=q; + return this.inflate_flush(z,r); + } + + this.index = 0; + this.mode = IB_DTREE; + case IB_DTREE: + while (true){ + t = this.table; + if(!(this.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))){ + break; + } + + var h; //int[] + var i, j, c; + + t = this.bb[0]; + + while(k<(t)){ + if(n!=0){ + r=Z_OK; + } + else{ + this.bitb=b; this.bitk=k; + z.avail_in=n; + z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + }; + n--; + b|=(z.next_in[p++]&0xff)<>>=(t);k-=(t); + this.blens[this.index++] = c; + } + else { // c == 16..18 + i = c == 18 ? 7 : c - 14; + j = c == 18 ? 11 : 3; + + while(k<(t+i)){ + if(n!=0){ + r=Z_OK; + } + else{ + this.bitb=b; this.bitk=k; + z.avail_in=n; + z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + }; + n--; + b|=(z.next_in[p++]&0xff)<>>=(t);k-=(t); + + j += (b & inflate_mask[i]); + + b>>>=(i);k-=(i); + + i = this.index; + t = this.table; + if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || + (c == 16 && i < 1)){ + this.blens=null; + this.mode = IB_BAD; + z.msg = "invalid bit length repeat"; + r = Z_DATA_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + } + + c = c == 16 ? this.blens[i-1] : 0; + do{ + this.blens[i++] = c; + } + while (--j!=0); + this.index = i; + } + } + + this.tb[0]=-1; + { + var bl=new Int32Array(1); + var bd=new Int32Array(1); + var tl=new Int32Array(1); + var td=new Int32Array(1); + bl[0] = 9; // must be <= 9 for lookahead assumptions + bd[0] = 6; // must be <= 9 for lookahead assumptions + + t = this.table; + t = this.inftree.inflate_trees_dynamic(257 + (t & 0x1f), + 1 + ((t >> 5) & 0x1f), + this.blens, bl, bd, tl, td, this.hufts, z); + + if (t != Z_OK){ + if (t == Z_DATA_ERROR){ + this.blens=null; + this.mode = BAD; + } + r = t; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z,r); + } + this.codes.init(bl[0], bd[0], this.hufts, tl[0], this.hufts, td[0], z); + } + this.mode = IB_CODES; + case IB_CODES: + this.bitb=b; this.bitk=k; + z.avail_in=n; z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + + if ((r = this.codes.proc(this, z, r)) != Z_STREAM_END){ + return this.inflate_flush(z, r); + } + r = Z_OK; + this.codes.free(z); + + p=z.next_in_index; n=z.avail_in;b=this.bitb;k=this.bitk; + q=this.write;m = (q < this.read ? this.read-q-1 : this.end-q); + + if (this.last==0){ + this.mode = IB_TYPE; + break; + } + this.mode = IB_DRY; + case IB_DRY: + this.write=q; + r = this.inflate_flush(z, r); + q=this.write; m = (q < this.read ? this.read-q-1 : this.end-q); + if (this.read != this.write){ + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z, r); + } + mode = DONE; + case IB_DONE: + r = Z_STREAM_END; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z, r); + case IB_BAD: + r = Z_DATA_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z, r); + + default: + r = Z_STREAM_ERROR; + + this.bitb=b; this.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + this.write=q; + return this.inflate_flush(z, r); + } + } + } + +InfBlocks.prototype.free = function(z){ + this.reset(z, null); + this.window=null; + this.hufts=null; +} + +InfBlocks.prototype.set_dictionary = function(d, start, n){ + arrayCopy(d, start, window, 0, n); + this.read = this.write = n; +} + + // Returns true if inflate is currently at the end of a block generated + // by Z_SYNC_FLUSH or Z_FULL_FLUSH. +InfBlocks.prototype.sync_point = function(){ + return this.mode == IB_LENS; +} + + // copy as much as possible from the sliding window to the output area +InfBlocks.prototype.inflate_flush = function(z, r){ + var n; + var p; + var q; + + // local copies of source and destination pointers + p = z.next_out_index; + q = this.read; + + // compute number of bytes to copy as far as end of window + n = ((q <= this.write ? this.write : this.end) - q); + if (n > z.avail_out) n = z.avail_out; + if (n!=0 && r == Z_BUF_ERROR) r = Z_OK; + + // update counters + z.avail_out -= n; + z.total_out += n; + + // update check information + if(this.checkfn != null) + z.adler=this.check=z._adler.adler32(this.check, this.window, q, n); + + // copy as far as end of window + arrayCopy(this.window, q, z.next_out, p, n); + p += n; + q += n; + + // see if more to copy at beginning of window + if (q == this.end){ + // wrap pointers + q = 0; + if (this.write == this.end) + this.write = 0; + + // compute bytes to copy + n = this.write - q; + if (n > z.avail_out) n = z.avail_out; + if (n!=0 && r == Z_BUF_ERROR) r = Z_OK; + + // update counters + z.avail_out -= n; + z.total_out += n; + + // update check information + if(this.checkfn != null) + z.adler=this.check=z._adler.adler32(this.check, this.window, q, n); + + // copy + arrayCopy(this.window, q, z.next_out, p, n); + p += n; + q += n; + } + + // update pointers + z.next_out_index = p; + this.read = q; + + // done + return r; + } + +// +// InfCodes.java +// + +var IC_START=0; // x: set up for LEN +var IC_LEN=1; // i: get length/literal/eob next +var IC_LENEXT=2; // i: getting length extra (have base) +var IC_DIST=3; // i: get distance next +var IC_DISTEXT=4;// i: getting distance extra +var IC_COPY=5; // o: copying bytes in window, waiting for space +var IC_LIT=6; // o: got literal, waiting for output space +var IC_WASH=7; // o: got eob, possibly still output waiting +var IC_END=8; // x: got eob and all data flushed +var IC_BADCODE=9;// x: got error + +function InfCodes() { +} + +InfCodes.prototype.init = function(bl, bd, tl, tl_index, td, td_index, z) { + this.mode=IC_START; + this.lbits=bl; + this.dbits=bd; + this.ltree=tl; + this.ltree_index=tl_index; + this.dtree = td; + this.dtree_index=td_index; + this.tree=null; +} + +InfCodes.prototype.proc = function(s, z, r){ + var j; // temporary storage + var t; // temporary pointer (int[]) + var tindex; // temporary pointer + var e; // extra bits or operation + var b=0; // bit buffer + var k=0; // bits in bit buffer + var p=0; // input data pointer + var n; // bytes available there + var q; // output window write pointer + var m; // bytes to end of window or read pointer + var f; // pointer to copy strings from + + // copy input/output information to locals (UPDATE macro restores) + p=z.next_in_index;n=z.avail_in;b=s.bitb;k=s.bitk; + q=s.write;m=q= 258 && n >= 10){ + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + r = this.inflate_fast(this.lbits, this.dbits, + this.ltree, this.ltree_index, + this.dtree, this.dtree_index, + s, z); + + p=z.next_in_index;n=z.avail_in;b=s.bitb;k=s.bitk; + q=s.write;m=q>>=(this.tree[tindex+1]); + k-=(this.tree[tindex+1]); + + e=this.tree[tindex]; + + if(e == 0){ // literal + this.lit = this.tree[tindex+2]; + this.mode = IC_LIT; + break; + } + if((e & 16)!=0 ){ // length + this.get = e & 15; + this.len = this.tree[tindex+2]; + this.mode = IC_LENEXT; + break; + } + if ((e & 64) == 0){ // next table + this.need = e; + this.tree_index = tindex/3 + this.tree[tindex+2]; + break; + } + if ((e & 32)!=0){ // end of block + this.mode = IC_WASH; + break; + } + this.mode = IC_BADCODE; // invalid code + z.msg = "invalid literal/length code"; + r = Z_DATA_ERROR; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + return s.inflate_flush(z,r); + + case IC_LENEXT: // i: getting length extra (have base) + j = this.get; + + while(k<(j)){ + if(n!=0)r=Z_OK; + else{ + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + return s.inflate_flush(z,r); + } + n--; b|=(z.next_in[p++]&0xff)<>=j; + k-=j; + + this.need = this.dbits; + this.tree = this.dtree; + this.tree_index = this.dtree_index; + this.mode = IC_DIST; + case IC_DIST: // i: get distance next + j = this.need; + + while(k<(j)){ + if(n!=0)r=Z_OK; + else{ + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + return s.inflate_flush(z,r); + } + n--; b|=(z.next_in[p++]&0xff)<>=this.tree[tindex+1]; + k-=this.tree[tindex+1]; + + e = (this.tree[tindex]); + if((e & 16)!=0){ // distance + this.get = e & 15; + this.dist = this.tree[tindex+2]; + this.mode = IC_DISTEXT; + break; + } + if ((e & 64) == 0){ // next table + this.need = e; + this.tree_index = tindex/3 + this.tree[tindex+2]; + break; + } + this.mode = IC_BADCODE; // invalid code + z.msg = "invalid distance code"; + r = Z_DATA_ERROR; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + return s.inflate_flush(z,r); + + case IC_DISTEXT: // i: getting distance extra + j = this.get; + + while(k<(j)){ + if(n!=0)r=Z_OK; + else{ + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + return s.inflate_flush(z,r); + } + n--; b|=(z.next_in[p++]&0xff)<>=j; + k-=j; + + this.mode = IC_COPY; + case IC_COPY: // o: copying bytes in window, waiting for space + f = q - this.dist; + while(f < 0){ // modulo window size-"while" instead + f += s.end; // of "if" handles invalid distances + } + while (this.len!=0){ + + if(m==0){ + if(q==s.end&&s.read!=0){q=0;m=q 7){ // return unused byte, if any + k -= 8; + n++; + p--; // can always return one + } + + s.write=q; r=s.inflate_flush(z,r); + q=s.write;m=q= 258 && n >= 10 + // get literal/length code + while(k<(20)){ // max bits for literal/length code + n--; + b|=(z.next_in[p++]&0xff)<>=(tp[tp_index_t_3+1]); k-=(tp[tp_index_t_3+1]); + + s.window[q++] = tp[tp_index_t_3+2]; + m--; + continue; + } + do { + + b>>=(tp[tp_index_t_3+1]); k-=(tp[tp_index_t_3+1]); + + if((e&16)!=0){ + e &= 15; + c = tp[tp_index_t_3+2] + (b & inflate_mask[e]); + + b>>=e; k-=e; + + // decode distance base of block to copy + while(k<(15)){ // max bits for distance code + n--; + b|=(z.next_in[p++]&0xff)<>=(tp[tp_index_t_3+1]); k-=(tp[tp_index_t_3+1]); + + if((e&16)!=0){ + // get extra bits to add to distance base + e &= 15; + while(k<(e)){ // get extra bits (up to 13) + n--; + b|=(z.next_in[p++]&0xff)<>=(e); k-=(e); + + // do the copy + m -= c; + if (q >= d){ // offset before dest + // just copy + r=q-d; + if(q-r>0 && 2>(q-r)){ + s.window[q++]=s.window[r++]; // minimum count is three, + s.window[q++]=s.window[r++]; // so unroll loop a little + c-=2; + } + else{ + s.window[q++]=s.window[r++]; // minimum count is three, + s.window[q++]=s.window[r++]; // so unroll loop a little + c-=2; + } + } + else{ // else offset after destination + r=q-d; + do{ + r+=s.end; // force pointer in window + }while(r<0); // covers invalid distances + e=s.end-r; + if(c>e){ // if source crosses, + c-=e; // wrapped copy + if(q-r>0 && e>(q-r)){ + do{s.window[q++] = s.window[r++];} + while(--e!=0); + } + else{ + arrayCopy(s.window, r, s.window, q, e); + q+=e; r+=e; e=0; + } + r = 0; // copy rest from start of window + } + + } + + // copy all or what's left + do{s.window[q++] = s.window[r++];} + while(--c!=0); + break; + } + else if((e&64)==0){ + t+=tp[tp_index_t_3+2]; + t+=(b&inflate_mask[e]); + tp_index_t_3=(tp_index+t)*3; + e=tp[tp_index_t_3]; + } + else{ + z.msg = "invalid distance code"; + + c=z.avail_in-n;c=(k>>3)>3:c;n+=c;p-=c;k-=c<<3; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + + return Z_DATA_ERROR; + } + } + while(true); + break; + } + + if((e&64)==0){ + t+=tp[tp_index_t_3+2]; + t+=(b&inflate_mask[e]); + tp_index_t_3=(tp_index+t)*3; + if((e=tp[tp_index_t_3])==0){ + + b>>=(tp[tp_index_t_3+1]); k-=(tp[tp_index_t_3+1]); + + s.window[q++]=tp[tp_index_t_3+2]; + m--; + break; + } + } + else if((e&32)!=0){ + + c=z.avail_in-n;c=(k>>3)>3:c;n+=c;p-=c;k-=c<<3; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + + return Z_STREAM_END; + } + else{ + z.msg="invalid literal/length code"; + + c=z.avail_in-n;c=(k>>3)>3:c;n+=c;p-=c;k-=c<<3; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + + return Z_DATA_ERROR; + } + } + while(true); + } + while(m>=258 && n>= 10); + + // not enough input or output--restore pointers and return + c=z.avail_in-n;c=(k>>3)>3:c;n+=c;p-=c;k-=c<<3; + + s.bitb=b;s.bitk=k; + z.avail_in=n;z.total_in+=p-z.next_in_index;z.next_in_index=p; + s.write=q; + + return Z_OK; +} + +// +// InfTree.java +// + +function InfTree() { +} + +InfTree.prototype.huft_build = function(b, bindex, n, s, d, e, t, m, hp, hn, v) { + + // Given a list of code lengths and a maximum table size, make a set of + // tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR + // if the given code set is incomplete (the tables are still built in this + // case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of + // lengths), or Z_MEM_ERROR if not enough memory. + + var a; // counter for codes of length k + var f; // i repeats in table every f entries + var g; // maximum code length + var h; // table level + var i; // counter, current code + var j; // counter + var k; // number of bits in current code + var l; // bits per table (returned in m) + var mask; // (1 << w) - 1, to avoid cc -O bug on HP + var p; // pointer into c[], b[], or v[] + var q; // points to current table + var w; // bits before this table == (l * h) + var xp; // pointer into x + var y; // number of dummy codes added + var z; // number of entries in current table + + // Generate counts for each bit length + + p = 0; i = n; + do { + this.c[b[bindex+p]]++; p++; i--; // assume all entries <= BMAX + }while(i!=0); + + if(this.c[0] == n){ // null input--all zero length codes + t[0] = -1; + m[0] = 0; + return Z_OK; + } + + // Find minimum and maximum length, bound *m by those + l = m[0]; + for (j = 1; j <= BMAX; j++) + if(this.c[j]!=0) break; + k = j; // minimum code length + if(l < j){ + l = j; + } + for (i = BMAX; i!=0; i--){ + if(this.c[i]!=0) break; + } + g = i; // maximum code length + if(l > i){ + l = i; + } + m[0] = l; + + // Adjust last length count to fill out codes, if needed + for (y = 1 << j; j < i; j++, y <<= 1){ + if ((y -= this.c[j]) < 0){ + return Z_DATA_ERROR; + } + } + if ((y -= this.c[i]) < 0){ + return Z_DATA_ERROR; + } + this.c[i] += y; + + // Generate starting offsets into the value table for each length + this.x[1] = j = 0; + p = 1; xp = 2; + while (--i!=0) { // note that i == g from above + this.x[xp] = (j += this.c[p]); + xp++; + p++; + } + + // Make a table of values in order of bit lengths + i = 0; p = 0; + do { + if ((j = b[bindex+p]) != 0){ + this.v[this.x[j]++] = i; + } + p++; + } + while (++i < n); + n = this.x[g]; // set n to length of v + + // Generate the Huffman codes and for each, make the table entries + this.x[0] = i = 0; // first Huffman code is zero + p = 0; // grab values in bit order + h = -1; // no tables yet--level -1 + w = -l; // bits decoded == (l * h) + this.u[0] = 0; // just to keep compilers happy + q = 0; // ditto + z = 0; // ditto + + // go through the bit lengths (k already is bits in shortest code) + for (; k <= g; k++){ + a = this.c[k]; + while (a--!=0){ + // here i is the Huffman code of length k bits for value *p + // make tables up to required level + while (k > w + l){ + h++; + w += l; // previous table always l bits + // compute minimum size table less than or equal to l bits + z = g - w; + z = (z > l) ? l : z; // table size upper limit + if((f=1<<(j=k-w))>a+1){ // try a k-w bit table + // too few codes for k-w bit table + f -= a + 1; // deduct codes from patterns left + xp = k; + if(j < z){ + while (++j < z){ // try smaller tables up to z bits + if((f <<= 1) <= this.c[++xp]) + break; // enough codes to use up j bits + f -= this.c[xp]; // else deduct codes from patterns + } + } + } + z = 1 << j; // table entries for j-bit table + + // allocate new table + if (this.hn[0] + z > MANY){ // (note: doesn't matter for fixed) + return Z_DATA_ERROR; // overflow of MANY + } + this.u[h] = q = /*hp+*/ this.hn[0]; // DEBUG + this.hn[0] += z; + + // connect to last table, if there is one + if(h!=0){ + this.x[h]=i; // save pattern for backing up + this.r[0]=j; // bits in this table + this.r[1]=l; // bits to dump before this table + j=i>>>(w - l); + this.r[2] = (q - this.u[h-1] - j); // offset to this table + arrayCopy(this.r, 0, hp, (this.u[h-1]+j)*3, 3); // connect to last table + } + else{ + t[0] = q; // first table is returned result + } + } + + // set up table entry in r + this.r[1] = (k - w); + if (p >= n){ + this.r[0] = 128 + 64; // out of values--invalid code + } + else if (v[p] < s){ + this.r[0] = (this.v[p] < 256 ? 0 : 32 + 64); // 256 is end-of-block + this.r[2] = this.v[p++]; // simple code is just the value + } + else{ + this.r[0]=(e[this.v[p]-s]+16+64); // non-simple--look up in lists + this.r[2]=d[this.v[p++] - s]; + } + + // fill code-like entries with r + f=1<<(k-w); + for (j=i>>>w;j>>= 1){ + i ^= j; + } + i ^= j; + + // backup over finished tables + mask = (1 << w) - 1; // needed on HP, cc -O bug + while ((i & mask) != this.x[h]){ + h--; // don't need to update q + w -= l; + mask = (1 << w) - 1; + } + } + } + // Return Z_BUF_ERROR if we were given an incomplete table + return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK; +} + +InfTree.prototype.inflate_trees_bits = function(c, bb, tb, hp, z) { + var result; + this.initWorkArea(19); + this.hn[0]=0; + result = this.huft_build(c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v); + + if(result == Z_DATA_ERROR){ + z.msg = "oversubscribed dynamic bit lengths tree"; + } + else if(result == Z_BUF_ERROR || bb[0] == 0){ + z.msg = "incomplete dynamic bit lengths tree"; + result = Z_DATA_ERROR; + } + return result; +} + +InfTree.prototype.inflate_trees_dynamic = function(nl, nd, c, bl, bd, tl, td, hp, z) { + var result; + + // build literal/length tree + this.initWorkArea(288); + this.hn[0]=0; + result = this.huft_build(c, 0, nl, 257, cplens, cplext, tl, bl, hp, this.hn, this.v); + if (result != Z_OK || bl[0] == 0){ + if(result == Z_DATA_ERROR){ + z.msg = "oversubscribed literal/length tree"; + } + else if (result != Z_MEM_ERROR){ + z.msg = "incomplete literal/length tree"; + result = Z_DATA_ERROR; + } + return result; + } + + // build distance tree + this.initWorkArea(288); + result = this.huft_build(c, nl, nd, 0, cpdist, cpdext, td, bd, hp, this.hn, this.v); + + if (result != Z_OK || (bd[0] == 0 && nl > 257)){ + if (result == Z_DATA_ERROR){ + z.msg = "oversubscribed distance tree"; + } + else if (result == Z_BUF_ERROR) { + z.msg = "incomplete distance tree"; + result = Z_DATA_ERROR; + } + else if (result != Z_MEM_ERROR){ + z.msg = "empty distance tree with lengths"; + result = Z_DATA_ERROR; + } + return result; + } + + return Z_OK; +} +/* + static int inflate_trees_fixed(int[] bl, //literal desired/actual bit depth + int[] bd, //distance desired/actual bit depth + int[][] tl,//literal/length tree result + int[][] td,//distance tree result + ZStream z //for memory allocation + ){ + +*/ + +function inflate_trees_fixed(bl, bd, tl, td, z) { + bl[0]=fixed_bl; + bd[0]=fixed_bd; + tl[0]=fixed_tl; + td[0]=fixed_td; + return Z_OK; +} + +InfTree.prototype.initWorkArea = function(vsize){ + if(this.hn==null){ + this.hn=new Int32Array(1); + this.v=new Int32Array(vsize); + this.c=new Int32Array(BMAX+1); + this.r=new Int32Array(3); + this.u=new Int32Array(BMAX); + this.x=new Int32Array(BMAX+1); + } + if(this.v.length 100) { + arrayCopy_fast(new Uint8Array(src.buffer, src.byteOffset + srcOffset, count), dest, destOffset); + } else { + arrayCopy_slow(src, srcOffset, dest, destOffset, count); + } + +} + +function arrayCopy_slow(src, srcOffset, dest, destOffset, count) { + + // dlog('_slow call: srcOffset=' + srcOffset + '; destOffset=' + destOffset + '; count=' + count); + + for (var i = 0; i < count; ++i) { + dest[destOffset + i] = src[srcOffset + i]; + } +} + +function arrayCopy_fast(src, dest, destOffset) { + dest.set(src, destOffset); +} + + + // largest prime smaller than 65536 +var ADLER_BASE=65521; + // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 +var ADLER_NMAX=5552; + +function adler32(adler, /* byte[] */ buf, index, len){ + if(buf == null){ return 1; } + + var s1=adler&0xffff; + var s2=(adler>>16)&0xffff; + var k; + + while(len > 0) { + k=len=16){ + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + s1+=buf[index++]&0xff; s2+=s1; + k-=16; + } + if(k!=0){ + do{ + s1+=buf[index++]&0xff; s2+=s1; + } + while(--k!=0); + } + s1%=ADLER_BASE; + s2%=ADLER_BASE; + } + return (s2<<16)|s1; +} + + + +function jszlib_inflate_buffer(buffer, start, length, afterUncOffset) { + if (!start) { + buffer = new Uint8Array(buffer); + } else if (!length) { + buffer = new Uint8Array(buffer, start, buffer.byteLength - start); + } else { + buffer = new Uint8Array(buffer, start, length); + } + + var z = new ZStream(); + z.inflateInit(DEF_WBITS, true); + z.next_in = buffer; + z.next_in_index = 0; + z.avail_in = buffer.length; + + var oBlockList = []; + var totalSize = 0; + while (true) { + var obuf = new Uint8Array(32000); + z.next_out = obuf; + z.next_out_index = 0; + z.avail_out = obuf.length; + var status = z.inflate(Z_NO_FLUSH); + if (status != Z_OK && status != Z_STREAM_END && status != Z_BUF_ERROR) { + throw z.msg; + } + if (z.avail_out != 0) { + var newob = new Uint8Array(obuf.length - z.avail_out); + arrayCopy(obuf, 0, newob, 0, (obuf.length - z.avail_out)); + obuf = newob; + } + oBlockList.push(obuf); + totalSize += obuf.length; + if (status == Z_STREAM_END || status == Z_BUF_ERROR) { + break; + } + } + + if (afterUncOffset) { + afterUncOffset[0] = (start || 0) + z.next_in_index; + } + + if (oBlockList.length == 1) { + return oBlockList[0].buffer; + } else { + var out = new Uint8Array(totalSize); + var cursor = 0; + for (var i = 0; i < oBlockList.length; ++i) { + var b = oBlockList[i]; + arrayCopy(b, 0, out, cursor, b.length); + cursor += b.length; + } + return out.buffer; + } +} + +return { + inflateBuffer: jszlib_inflate_buffer, + arrayCopy: arrayCopy + }; +}); diff --git a/client/galaxy/scripts/libs/bbi/spans.js b/client/galaxy/scripts/libs/bbi/spans.js new file mode 100644 index 00000000000..7c61b8594c4 --- /dev/null +++ b/client/galaxy/scripts/libs/bbi/spans.js @@ -0,0 +1,257 @@ +/* -*- mode: javascript; c-basic-offset: 4; indent-tabs-mode: nil -*- */ + +// +// Dalliance Genome Explorer +// (c) Thomas Down 2006-2010 +// +// spans.js: JavaScript Intset/Location port. +// + +define([], function() { + +"use strict"; + + +function Range(min, max) +{ + if (typeof(min) != 'number' || typeof(max) != 'number') + throw 'Bad range ' + min + ',' + max; + this._min = min; + this._max = max; +} + +Range.prototype.min = function() { + return this._min; +} + +Range.prototype.max = function() { + return this._max; +} + +Range.prototype.contains = function(pos) { + return pos >= this._min && pos <= this._max; +} + +Range.prototype.isContiguous = function() { + return true; +} + +Range.prototype.ranges = function() { + return [this]; +} + +Range.prototype._pushRanges = function(ranges) { + ranges.push(this); +} + +Range.prototype.toString = function() { + return '[' + this._min + '-' + this._max + ']'; +} + +function _Compound(ranges) { + // given: a set of unsorted possibly overlapping ranges + // sort the input ranges + var sorted = ranges.sort(_rangeOrder); + // merge overlaps between adjacent ranges + var merged = []; + var current = sorted.shift(); + sorted.forEach(function(range) { + if (range._min <= current._max) { + if (range._max > current._max) { + current._max = range._max; + } + } + else { + merged.push(current); + current = range; + } + }); + merged.push(current); + this._ranges = merged; +} + +_Compound.prototype.min = function() { + return this._ranges[0].min(); +} + +_Compound.prototype.max = function() { + return this._ranges[this._ranges.length - 1].max(); +} + +// returns the index of the first range that is not less than pos +_Compound.prototype.lower_bound = function(pos) { + // first check if pos is out of range + var r = this.ranges(); + if (pos > this.max()) return r.length; + if (pos < this.min()) return 0; + // do a binary search + var a=0, b=r.length - 1; + while (a <= b) { + var m = Math.floor((a+b)/2); + if (pos > r[m]._max) { + a = m+1; + } + else if (pos < r[m]._min) { + b = m-1; + } + else { + return m; + } + } + return a; +} + +_Compound.prototype.contains = function(pos) { + var lb = this.lower_bound(pos); + if (lb < this._ranges.length && this._ranges[lb].contains(pos)) { + return true; + } + return false; +} + +_Compound.prototype.insertRange = function(range) { + var lb = this.lower_bound(range._min); + if (lb === this._ranges.length) { // range follows this + this._ranges.push(range); + return; + } + + var r = this.ranges(); + if (range._max < r[lb]._min) { // range preceeds lb + this._ranges.splice(lb,0,range); + return; + } + + // range overlaps lb (at least) + if (r[lb]._min < range._min) range._min = r[lb]._min; + var ub = lb+1; + while (ub < r.length && r[ub]._min <= range._max) { + ub++; + } + ub--; + // ub is the upper bound of the new range + if (r[ub]._max > range._max) range._max = r[ub]._max; + + // splice range into this._ranges + this._ranges.splice(lb,ub-lb+1,range); + return; +} + +_Compound.prototype.isContiguous = function() { + return this._ranges.length > 1; +} + +_Compound.prototype.ranges = function() { + return this._ranges; +} + +_Compound.prototype._pushRanges = function(ranges) { + for (var ri = 0; ri < this._ranges.length; ++ri) + ranges.push(this._ranges[ri]); +} + +_Compound.prototype.toString = function() { + var s = ''; + for (var r = 0; r < this._ranges.length; ++r) { + if (r>0) { + s = s + ','; + } + s = s + this._ranges[r].toString(); + } + return s; +} + +function union(s0, s1) { + if (! (s0 instanceof _Compound)) { + if (! (s0 instanceof Array)) + s0 = [s0]; + s0 = new _Compound(s0); + } + + if (s1) + s0.insertRange(s1); + + return s0; +} + +function intersection(s0, s1) { + var r0 = s0.ranges(); + var r1 = s1.ranges(); + var l0 = r0.length, l1 = r1.length; + var i0 = 0, i1 = 0; + var or = []; + + while (i0 < l0 && i1 < l1) { + var s0 = r0[i0], s1 = r1[i1]; + var lapMin = Math.max(s0.min(), s1.min()); + var lapMax = Math.min(s0.max(), s1.max()); + if (lapMax >= lapMin) { + or.push(new Range(lapMin, lapMax)); + } + if (s0.max() > s1.max()) { + ++i1; + } else { + ++i0; + } + } + + if (or.length == 0) { + return null; // FIXME + } else if (or.length == 1) { + return or[0]; + } else { + return new _Compound(or); + } +} + +function coverage(s) { + var tot = 0; + var rl = s.ranges(); + for (var ri = 0; ri < rl.length; ++ri) { + var r = rl[ri]; + tot += (r.max() - r.min() + 1); + } + return tot; +} + + + +function rangeOrder(a, b) +{ + if (a.min() < b.min()) { + return -1; + } else if (a.min() > b.min()) { + return 1; + } else if (a.max() < b.max()) { + return -1; + } else if (b.max() > a.max()) { + return 1; + } else { + return 0; + } +} + +function _rangeOrder(a, b) +{ + if (a._min < b._min) { + return -1; + } else if (a._min > b._min) { + return 1; + } else if (a._max < b._max) { + return -1; + } else if (b._max > a._max) { + return 1; + } else { + return 0; + } +} + +return { + Range: Range, + union: union, + intersection: intersection, + coverage: coverage, + rangeOver: rangeOrder, + _rangeOrder: _rangeOrder +}; +}); diff --git a/client/galaxy/scripts/viz/bbi-data-manager.js b/client/galaxy/scripts/viz/bbi-data-manager.js new file mode 100644 index 00000000000..23d0da9e6d2 --- /dev/null +++ b/client/galaxy/scripts/viz/bbi-data-manager.js @@ -0,0 +1,60 @@ +define( ["viz/visualization", "libs/bbi/bigwig"], + function(visualization, bigwig) { + + /** + * Data manager for BBI datasets/files, including BigWig and BigBed. + */ + var BBIDataManager = visualization.GenomeDataManager.extend({ + + /** + * Load data from server and manages data entries. Adds a Deferred to manager + * for region; when data becomes available, replaces Deferred with data. + * Returns the Deferred that resolves when data is available. + */ + load_data: function(region, mode, resolution, extra_params) { + var deferred = $.Deferred(); + this.set_data(region, deferred); + + var url = galaxy_config.root + 'datasets/' + this.get('dataset').id + '/display', + self = this; + var promise = new $.Deferred(); + $.when(bigwig.makeBwg(url)).then(function(bb, err) { + $.when(bb.readWigData(region.get("chrom"), region.get("start"), region.get("end"))).then(function(data) { + // Transform data into "bigwig" format. "bigwig" format is an array of 2-element arrays + // where each array is [position, score]. + var result = []; + data.forEach(function(d) { + // Each data element includes a min and max. If min and max are the same, + // then entry is single base-pair resolution and only a single data point + // is added. Otherwise entry is multiple base pairs and two data points are + // added, one for the start and one for the end. + + // Add data point for entry start. + result.push([d.min, d.score]); + + if (d.min !== d.max) { + // Multi base-pair entry, so two data points are generated. + result.push([d.max, d.score]); + } + }); + + var entry = { + data: result, + region: region, + dataset_type: 'bigwig' + }; + + self.set_data(region, entry); + deferred.resolve(entry); + }); + }); + + return deferred; + }, + }); + + return { + BBIDataManager: BBIDataManager + }; + +}); diff --git a/client/galaxy/scripts/viz/trackster/tracks.js b/client/galaxy/scripts/viz/trackster/tracks.js index a84f2e660fc..f3a3fd26d37 100644 --- a/client/galaxy/scripts/viz/trackster/tracks.js +++ b/client/galaxy/scripts/viz/trackster/tracks.js @@ -9,8 +9,9 @@ define([ "mvc/dataset/data", "mvc/tool/tools", "utils/config", + "viz/bbi-data-manager", "ui/editable-text", -], function(_, visualization, viz_views, util, slotting, painters, filters_mod, data, tools_mod, config_mod) { +], function(_, visualization, viz_views, util, slotting, painters, filters_mod, data, tools_mod, config_mod, bbi) { var extend = _.extend; @@ -187,6 +188,18 @@ function round(num, places) { return Math.round(num * val) / val; } +/** + * Check if a server can do byte range requests. + */ +function supportsByteRanges(url) { + var promise = $.Deferred(); + $.get(url).success(function (result, status, xhr) { + promise.resolve(xhr.getResponseHeader("Accept-Ranges") === "bytes"); + }); + + return promise; +} + /** * Drawables hierarchy: * @@ -3078,7 +3091,7 @@ extend(TiledTrack.prototype, Drawable.prototype, Track.prototype, { if ( [undefined, null, 0].indexOf(this.config.get_value("max_value")) !== -1 ) { this.config.set_value("max_value", _.max( _.map(result.data, function(d) { return d[1]; }) ) || 0); } - + var canvas = ctx.canvas, painter = new painters.LinePainter(result.data, region.get('start'), region.get('end'), this.config.to_key_value_dict(), mode); painter.draw(ctx, canvas.width, canvas.height, w_scale); @@ -3601,7 +3614,22 @@ extend(ReferenceTrack.prototype, Drawable.prototype, TiledTrack.prototype, { var LineTrack = function (view, container, obj_dict) { this.mode = "Histogram"; TiledTrack.call(this, view, container, obj_dict); + + // var self = this; + // $.when(supportsByteRanges(galaxy_config.root + 'datasets/' + this.dataset.id + '/display')) + // .then(function(supportsByteRanges) { + // if (supportsByteRanges) { + // self.data_manager = new bbi.BBIDataManager({ + // dataset: this.dataset + // }); + // } + // + // }); + this.data_manager = new bbi.BBIDataManager({ + dataset: this.dataset + }); }; + extend(LineTrack.prototype, Drawable.prototype, TiledTrack.prototype, { display_modes: CONTINUOUS_DATA_MODES, diff --git a/static/maps/libs/bbi/bigwig.js.map b/static/maps/libs/bbi/bigwig.js.map new file mode 100644 index 00000000000..d42e36b83f9 --- /dev/null +++ b/static/maps/libs/bbi/bigwig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bigwig.js","sources":["../../../src/libs/bbi/bigwig.js"],"names":["define","spans","jszlib","DASFeature","DASGroup","id","this","readInt","ba","offset","read","url","start","size","Math","pow","$","ajax","type","dataType","timeout","beforeSend","xhrObj","setRequestHeader","xhrFields","responseType","bwg_readOffset","o","M1","M2","M3","M4","BigWig","BigWigView","bwg","cirTreeOffset","cirTreeLength","isSummary","makeBwg","promise","Deferred","when","then","result","resolve","header","Uint8Array","sa","Int16Array","la","Int32Array","magic","BIG_WIG_MAGIC","BIG_BED_MAGIC","BIG_WIG_MAGIC_BE","BIG_BED_MAGIC_BE","toString","version","numZoomLevels","chromTreeOffset","unzoomedDataOffset","unzoomedIndexOffset","fieldCount","definedFieldCount","asOffset","totalSummaryOffset","uncompressBufSize","extHeaderOffset","zoomLevels","zl","zlReduction","zlData","zlIndex","push","reduction","dataOffset","indexOffset","readChromTree","getAutoSQL","as","schema","BBIExtraIndex","bbi","field","Range","union","intersection","jszlib_inflate_buffer","inflateBuffer","arrayCopy","BIG_WIG_TYPE_GRAPH","BIG_WIG_TYPE_VSTEP","BIG_WIG_TYPE_FSTEP","BED_COLOR_REGEXP","RegExp","prototype","thisB","chromsToIDs","idsToChroms","maxID","udo","eb","bpt","keySize","rootNodeOffset","bptReadNode","nodeType","cnt","n","childOffset","key","ki","charCode","String","fromCharCode","chromId","indexOf","substr","max","readWigData","chrName","min","rval","chr","undefined","readWigDataById","cirHeader","cirBlockSize","blocksToFetch","outstanding","filter","Date","now","fmin","fmax","cirFobRecur","level","instrument","console","log","length","cachedCirRoot","cirFobRecur2","fetchFeatures","maxCirBlockSpan","i","blockSpan","fetchRanges","ranges","r","fr","cirFobStartFetch","resultBuffer","contains","cirBlockData","isLeaf","lo","startChrom","startBase","endChrom","endBase","blockOffset","blockSize","recurOffsets","sort","b0","b1","features","createFeature","opts","f","_chromId","segment","k","tramp","block","data","parseFeatures","splice","fetchStart","fetchSize","bi","fb","tmp","buffer","fa","Float32Array","itemCount","byteLength","end","validCnt","maxVal","sumData","summaryOpts","score","maxScore","blockStart","itemStep","itemSpan","blockType","Error","dfc","rest","ch","bedColumns","featureOpts","split","label","parseInt","isNaN","orientation","color","test","itemRgb","col","fields","name","thickStart","thickEnd","blockCount","blockSizes","blockStarts","exonFrames","grp","notes","groups","geneId","geneName","geneName2","gg","extend","spanList","b","bmin","bmax","span","tsList","s","ts","codingRegion","tl","tlList","readingFrame","tlOffset","index","readframe","brf","readframeExplicit","getFirstAdjacent","pos","dir","callback","getFirstAdjacentById","slice","fetch","blockToFetch","bestBlockChr","bestBlockOffset","chrx","bestFeature","bestChr","bestPos","fi","exec","bestRecur","view","MAX_DATA_POINTS","range","getUnzoomedView","getZoomedView","unzoomedView","cirLen","nzl","z","zh","_tsFetch","zoom","topLevelReductionCache","c","feats","thresholdSearch","referencePoint","threshold","fbThresholdSearchRecur","candidates","c1","c2","d","chrOrd","candidate","rp","fromRef","initialChr","chrId","header_re","field_re","headerMatch","declType","comment","substring","m","getExtraIndices","extraIndexCount","extraIndexListOffset","eil","indices","ii","eiType","eiFieldCount","eiOffset","eiField","lookup","nodeOffset","valSize","node","Uint16Array","Uint32Array","toks","lastChildOffset","localeCompare"],"mappings":"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"} \ No newline at end of file diff --git a/static/maps/libs/bbi/jquery-ajax-native.js.map b/static/maps/libs/bbi/jquery-ajax-native.js.map new file mode 100644 index 00000000000..945dc08657a --- /dev/null +++ b/static/maps/libs/bbi/jquery-ajax-native.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jquery-ajax-native.js","sources":["../../../src/libs/bbi/jquery-ajax-native.js"],"names":["root","factory","define","amd","exports","module","require","jQuery","this","$","ajaxSettings","responseFields","native","converters","support","xhrId","xhrSuccessStatus",1223,"xhrCallbacks","xhrSupported","xhr","window","ActiveXObject","on","key","cors","ajax","ajaxTransport","options","callback","crossDomain","send","headers","complete","i","id","responses","open","type","url","async","username","password","xhrFields","mimeType","overrideMimeType","setRequestHeader","onload","onerror","abort","status","statusText","response","getAllResponseHeaders","hasContent","data","e","getNative","dataType","responseType","success"],"mappings":"CAIC,SAAUA,EAAMC,GACS,kBAAXC,SAAyBA,OAAOC,IAEvCD,QAAQ,UAAWD,GACO,gBAAZG,SAIdC,OAAOD,QAAUH,EAAQK,QAAQ,WAGjCL,EAAQD,EAAKO,SAEnBC,KAAM,SAAWC,GACf,GAAIC,GAAeD,EAAEC,YACrBA,GAAaC,eAAeC,OAAS,iBACrCF,EAAaG,WAAY,aAAe,CACxC,IAAIC,MACAC,EAAQ,EACRC,GAEI,EAAG,IAGHC,KAAM,KAEVC,KACAC,EAAeZ,OAAOG,aAAaU,KAGlCC,QAAOC,eACRb,EAAGY,QAASE,GAAI,SAAU,WACtB,IAAM,GAAIC,KAAON,GACbA,EAAcM,OAI1BV,EAAQW,OAASN,GAAkB,mBAAqBA,GACxDL,EAAQY,KAAOP,IAAiBA,EAGhCV,EAAEkB,cAAc,SAAU,SAAWC,GACjC,GAAIC,EAEJ,OAAKf,GAAQW,MAAQN,IAAiBS,EAAQE,aAEtCC,KAAM,SAAUC,EAASC,GACrB,GAAIC,GACAd,EAAMQ,EAAQR,MACde,IAAOpB,EACPqB,IAKJ,IAHAhB,EAAIiB,KAAMT,EAAQU,KAAMV,EAAQW,IAAKX,EAAQY,MAAOZ,EAAQa,SAAUb,EAAQc,UAGzEd,EAAQe,UACT,IAAMT,IAAKN,GAAQe,UACfvB,EAAKc,GAAMN,EAAQe,UAAWT,EAKjCN,GAAQgB,UAAYxB,EAAIyB,kBACzBzB,EAAIyB,iBAAkBjB,EAAQgB,UAQ5BhB,EAAQE,aAAgBE,EAAQ,sBAClCA,EAAQ,oBAAsB,iBAIlC,KAAME,IAAKF,GACPZ,EAAI0B,iBAAkBZ,EAAGF,EAASE,GAItCL,GAAW,SAAUS,GACjB,MAAO,YACET,UACMX,GAAciB,GACrBN,EAAWT,EAAI2B,OAAS3B,EAAI4B,QAAU,KAExB,UAATV,EACDlB,EAAI6B,QACa,UAATX,EACRL,EAEIb,EAAI8B,OACJ9B,EAAI+B,aAKH/B,EAAIgC,WACLhB,EAAUxB,OAASQ,EAAIgC,UAG3BnB,EACIjB,EAAkBI,EAAI8B,SAAY9B,EAAI8B,OACtC9B,EAAI+B,WACJf,EACAhB,EAAIiC,6BAQxBjC,EAAI2B,OAASlB,IACbT,EAAI4B,QAAUnB,EAAS,SAGvBA,EAAWX,EAAciB,GAAON,EAAS,QAEzC,KAEIT,EAAIW,KAAMH,EAAQ0B,YAAc1B,EAAQ2B,MAAQ,MAClD,MAAQC,GAEN,GAAK3B,EACD,KAAM2B,KAKlBP,MAAO,WACEpB,GACDA,MAzFhB,SAkGJpB,EAAEgD,UAAY,SAAWlB,EAAKV,GAC1B,MAAOpB,GAAEiB,MACLgC,SAAU,SACVnB,IAAKA,EACLI,WACIgB,aAAc,eAElBC,QAAS/B"} \ No newline at end of file diff --git a/static/maps/libs/bbi/jszlib.js.map b/static/maps/libs/bbi/jszlib.js.map new file mode 100644 index 00000000000..4294b930614 --- /dev/null +++ b/static/maps/libs/bbi/jszlib.js.map @@ -0,0 +1 @@ +{"version":3,"file":"jszlib.js","sources":["../../../src/libs/bbi/jszlib.js"],"names":["define","ZStream","Inflate","this","was","InfBlocks","z","checkfn","w","hufts","Int32Array","MANY","window","Uint8Array","end","mode","IB_TYPE","reset","left","table","index","blens","bb","tb","codes","InfCodes","last","bitk","bitb","read","write","check","inftree","InfTree","inflate_trees_fixed","bl","bd","tl","td","fixed_bl","fixed_bd","fixed_tl","fixed_td","Z_OK","arrayCopy","src","srcOffset","dest","destOffset","count","length","arrayCopy_fast","hasSubarray","subarray","BYTES_PER_ELEMENT","buffer","byteOffset","arrayCopy_slow","i","set","jszlib_inflate_buffer","start","afterUncOffset","byteLength","inflateInit","DEF_WBITS","next_in","next_in_index","avail_in","oBlockList","totalSize","obuf","next_out","next_out_index","avail_out","status","inflate","Z_NO_FLUSH","Z_STREAM_END","Z_BUF_ERROR","msg","newob","push","out","cursor","b","MAX_WBITS","BMAX","PRESET_DICT","Z_FINISH","Z_DEFLATED","Z_NEED_DICT","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","METHOD","FLAG","DICT4","DICT3","DICT2","DICT1","DICT0","BLOCKS","CHECK4","CHECK3","CHECK2","CHECK1","DONE","BAD","inflate_mask","IB_LENS","IB_STORED","IB_TABLE","IB_BTREE","IB_DTREE","IB_CODES","IB_DRY","IB_DONE","IB_BAD","cplens","cplext","cpdist","cpdext","prototype","nowrap","istate","f","inflateEnd","ret","inflateSync","inflateSetDictionary","dictionary","dictLength","inflateReset","total_in","total_out","blocks","free","wbits","r","method","marker","need","adler","proc","_adler","adler32","set_dictionary","mark","n","p","m","inflateSyncPoint","sync_point","INFBLOCKS_BORDER","c","t","k","q","inflate_flush","init","inflate_trees_bits","j","inflate_trees_dynamic","d","IC_START","IC_LEN","IC_LENEXT","IC_DIST","IC_DISTEXT","IC_COPY","IC_LIT","IC_WASH","IC_END","IC_BADCODE","tl_index","td_index","lbits","dbits","ltree","ltree_index","dtree","dtree_index","tree","s","tindex","e","inflate_fast","tree_index","lit","get","len","dist","tp","tp_index","ml","md","tp_index_t_3","huft_build","bindex","hp","hn","v","a","g","h","l","mask","xp","y","x","u","result","initWorkArea","nl","nd","vsize","testArray","inflateBuffer"],"mappings":"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B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC7B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,GAAG,EAAE,IAC7B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC7B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,GAAG,EAAE,IAC7B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC7B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE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,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC7B,GAAG,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,GAAG,EAAE,IAC/B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC7B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,GAAG,EAAE,IAC7B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,EAAG,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,EAAG,EAAE,EAAE,GAAI,EAAE,EAAE,GAAI,EAAE,EAAE,IAC5B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,GAAG,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,GAAI,EAAE,EAAE,IAC9B,EAAE,EAAE,GAAI,EAAE,EAAE,IAAK,EAAE,EAAE,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"} \ No newline at end of file diff --git a/static/maps/libs/bbi/spans.js.map b/static/maps/libs/bbi/spans.js.map new file mode 100644 index 00000000000..3acdfa5c3fb --- /dev/null +++ b/static/maps/libs/bbi/spans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"spans.js","sources":["../../../src/libs/bbi/spans.js"],"names":["define","Range","min","max","this","_min","_max","_Compound","ranges","sorted","sort","_rangeOrder","merged","current","shift","forEach","range","push","_ranges","union","s0","s1","Array","insertRange","intersection","r0","r1","l0","length","l1","i0","i1","or","lapMin","Math","lapMax","coverage","s","tot","rl","ri","r","rangeOrder","a","b","prototype","contains","pos","isContiguous","_pushRanges","toString","lower_bound","m","floor","lb","splice","ub","rangeOver"],"mappings":"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"} \ No newline at end of file diff --git a/static/maps/viz/bbi-data-manager.js.map b/static/maps/viz/bbi-data-manager.js.map new file mode 100644 index 00000000000..7d1bbbb3111 --- /dev/null +++ b/static/maps/viz/bbi-data-manager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bbi-data-manager.js","sources":["../../src/viz/bbi-data-manager.js"],"names":["define","visualization","bigwig","BBIDataManager","GenomeDataManager","extend","load_data","region","deferred","$","Deferred","this","set_data","url","galaxy_config","root","get","id","self","when","makeBwg","then","bb","readWigData","data","result","forEach","d","push","min","score","max","entry","dataset_type","resolve"],"mappings":"AAAAA,QAAS,oBAAqB,mBACtB,SAASC,EAAeC,GAK5B,GAAIC,GAAiBF,EAAcG,kBAAkBC,QAOjDC,UAAW,SAASC,GAChB,GAAIC,GAAWC,EAAEC,UACjBC,MAAKC,SAASL,EAAQC,EAEtB,EAAA,GAAIK,GAAMC,cAAcC,KAAO,YAAcJ,KAAKK,IAAI,WAAWC,GAAK,WAClEC,EAAOP,IACO,IAAIF,GAAEC,SAgCxB,MA/BID,GAAEU,KAAKjB,EAAOkB,QAAQP,IAAMQ,KAAK,SAASC,GACtCb,EAAEU,KAAKG,EAAGC,YAAYhB,EAAOS,IAAI,SAAUT,EAAOS,IAAI,SAAUT,EAAOS,IAAI,SAASK,KAAK,SAASG,GAGlG,GAAIC,KACJD,GAAKE,QAAQ,SAASC,GAOlBF,EAAOG,MAAMD,EAAEE,IAAKF,EAAEG,QAElBH,EAAEE,MAAQF,EAAEI,KAEZN,EAAOG,MAAMD,EAAEI,IAAKJ,EAAEG,SAI9B,IAAIE,IACIR,KAAMC,EACNlB,OAAQA,EACR0B,aAAc,SAGtBf,GAAKN,SAASL,EAAQyB,GACtBxB,EAAS0B,QAAQF,OAIlBxB,IAIf,QACIL,eAAgBA"} \ No newline at end of file diff --git a/static/maps/viz/trackster/tracks.js.map b/static/maps/viz/trackster/tracks.js.map index 94e4c48ac35..38bedaad3dc 100644 --- a/static/maps/viz/trackster/tracks.js.map +++ b/static/maps/viz/trackster/tracks.js.map @@ -1 +1 @@ -{"version":3,"file":"tracks.js","sources":["../../../src/viz/trackster/tracks.js"],"names":["define","_","visualization","viz_views","util","slotting","painters","filters_mod","data","tools_mod","config_mod","round","num","places","val","Math","pow","extend","html_elt_js_obj_dict","is_container","element","obj","attr","moveable","handle_class","container_selector","element_js_obj","bind","handle","relative","e","d","child","container","top","bottom","i","parent","$","this","children","this_obj","parents","length","position","outerHeight","cur_container","offsetY","insertBefore","remove_drawable","add_drawable_before","insertAfter","add_drawable","get","is","find","prepend","append","hasClass","move_drawable","deltaY","addClass","removeClass","ERROR_PADDING","MAX_FEATURE_DEPTH","MIN_SQUISH_VIEW_WIDTH","TILE_SIZE","DEFAULT_DATA_QUERY_WAIT","MAX_CHROMS_SELECTABLE","DATA_ERROR","DATA_NOCONVERTER","DATA_NONE","DATA_PENDING","DATA_CANNOT_RUN_TOOL","DATA_OK","TILE_CACHE_SIZE","CONTINUOUS_DATA_MODES","Drawable","view","obj_dict","id_counter","id","drag_handle_class","is_overview","action_icons","config","ConfigSettingCollection","from_models_and_saved_values","config_params","prefs","get_value","set_value","name","config_onchange","on","container_div","build_container_div","header_div","header","header_view","TrackHeaderView","model","$el","icons_div","hover","show","hide","prototype","action_icons_def","title","css_class","on_click_fn","drawable","toggle_icon","hide_contents","show_contents","ConfigSettingCollectionView","collection","render_in_modal","remove","key","label","type","default_value","hidden","init","changed","can_draw","enabled","request_draw","_draw","to_dict","set_name","new_name","old_name","revert_name","update_intro_div","update_icons","get_drawables","DrawableCollection","call","obj_type","drawables","unpack_drawables","drawables_array","object_from_template","options","dictified_drawables","push","to_key_value_dict","other","index","indexOf","splice","replace_drawable","old_drawable","new_drawable","update_html","replaceWith","new_position","get_tracks","track_type","queue","slice","tracks","shift","concat","DrawableGroup","content_div","appendTo","filters_manager","FiltersManager","after","parent_div","saved_filters_managers","old_manager","filters","visible","setup_multitrack_filtering","group","show_composite_track","clear_filters","_restore_filter_managers","clear_tile_cache","toggle","tiles_div","num_drawables","composite_icon","filters_icon","CompositeTrack","j","same_type","a_type","get_type","num_feature_tracks","can_composite","FeatureTrack","LineTrack","filter","shared_filters","remove_all","new_filter","filter_name","NumberFilter","add_filter","init_filters","composite_track","each","TracksterView","Backbone","View","initialize","chrom","vis_id","dbkey","stand_alone","undefined","label_tracks","tracks_to_be_redrawn","max_low","max_high","zoom_factor","min_separation","has_changes","load_chroms_deferred","render","canvas_manager","CanvasManager","ownerDocument","reset","requested_redraw","parent_element","top_container","browser_content_div","bottom_container","top_labeltrack","viewport_container","intro_div","text","click","select_datasets","Galaxy","root","f-dbkey","track","nav_container","prependTo","nav","overview","overview_viewport","overview_close","overview_highlight","overview_box_background","overview_box","default_overview_height","height","nav_controls","chrom_select","submit_nav","keyCode","which","go_to","location_span","stopPropagation","nav_input","tooltip","placement","low","high","css","select","focus","autocomplete","source","request","response","all_features","feature_search_deferreds","map","t","data_manager","search_features","term","success","dataset_features","when","apply","done","feature","value","minLength","hidden_input","zo_link","zoom_out","zi_link","zoom_in","load_chroms","change_chrom","trigger","pageX","current_x","offsetX","delta","delta_chrom","width","move_delta","reset_overview","clientX","original_low","current_height","clientY","new_scroll","scrollTop","proxy","left","min","startX","offset","abs","max","span","update_location","old_low","request_redraw","add_label_track","LabelTrack","window","resize_timer","clearTimeout","setTimeout","resize_window","document","redraw","get_base_color","base","toLowerCase","trigger_navigate","new_chrom","new_low","new_high","delay","timer","self","commatize","url_parms","chrom_data","Deferred","ajax","url","dataType","result","chrom_info","reference","ref_track","ReferenceTrack","reference_track","chrom_options","len","prev_chroms","next_chroms","html","chrom_start_index","start_index","resolve","error","alert","then","found","grep","v","str","replace","chrom_pos","split","parseInt","move_fraction","fraction","current_chrom_span","data_fetch","redraw_on_move_fn","label_track","track_list","track_options","to","requestAnimationFrame","_redraw","floor","ceil","resolution_px_b","left_px","width_px","min_width_px","point","cur_center","new_half","resize_viewport","set_overview","overview_drawable","dataset","copy","postdraw_actions","TracksterTool","Tool","defaults","tool_state","set","remove_inputs","state_dict","get_inputs_dict","is_visible","ToolParameterView","events","change :input","param_div","param","html_div","update_value","update_event","target","TracksterToolView","set_visible","tool","keydown","param_view","run_tool_row","run_on_dataset_button","run_on_region_button","run_on_region","run_on_dataset","update_params","params","run","target_dataset_id","action","tool_id","modal","body","buttons","Close","region","GenomeRegion","start","end","url_params","regions","toJSON","current_track","track_name","tool_region_and_parameters_str","new_track","constructor","hda_ldda","init_for_tool_data","change_mode","mode","set_filters_manager","track_data","set_dataset","Dataset","success_callback","inputs","ss_deferred","ServerStateDeferred","ajax_settings","JSON","stringify","contentType","interval","success_fn","go","message","FilterScaler","default_val","Scaler","gen_val","feature_data","Number","MAX_VALUE","parseFloat","Tile","w_scale","canvas","html_elt","stale","predisplay_actions","LineTrackTile","FeatureTrackTile","all_slotted","feature_mapper","incomplete_features","seq_data","has_icons","other_tiles_features_drawn","Track","Model","dataset_check_type","data_url_extra_params","data_query_wait","GenomeDataManager","genome","Genome","chroms_info","data_mode_compatible","data_and_mode_compatible","can_subset","min_height_px","max_height_px","visible_height_px","resize","add_resize_handle","cancel_fn","unbind","ok_fn","regions_to_use","view_region","bookmarked_regions","elt","from_str","location","href","dataset_id","Collection","No","Yes","on_resize","in_handle","in_drag","drag_control","original_height","new_height","tile_cache","clear","ReadTrack","VariantTrack","show_message","msg_html","retry","init_deferred","data_type","getJSON","kind","status","valid_chroms","predraw_init","msg_elt","stats","min_value","max_value","mean","sd","set_default_value","TiledTrack","filters_available","Cache","left_offset","tool_view","dynamic_tool_div","overlay_div","slotters","max_rows","set_min_max","isNaN","new_mode","mode_icon","tools_icon","param_space_viz_icon","_gen_tile_cache_key","tile_region","before_draw","clear_after","resolution","tile_promise","tile_width","tile_index","tile_promises","tiles","draw_helper","tile","_add_yaxis_label","on_change","pref_name","make_text_editable","num_cols","on_finish","new_val","help_text","line_track_tiles","force","icons_present","get_mode","update_auto_mode","_get_drawables","is_tile","o","get_elt","show_tile","get_tile_data","data_mode","m","tile_data","get_data","tile_drawn","set_elt","tracks_data","is_deferred","subset_entry","pop","drawing_modes","drawing_heights","get_canvas_height","new_canvas","tile_low","tile_high","ctx","getContext","translate","globalAlpha","globalCompositeOperation","draw_tile","_draw_line_track_tile","painter","LinePainter","draw","tile_element","track_height","region_str","toString","param_str","values","join","dataset_type","extra_info","entry","range","tickDistance","log","new_div","screenPosition","display_modes","union","show_group","visible_height","init_deferreds","update_all_min_max","max_height","char_width_px","data_url","GenomeReferenceDataManager","new_visible","cur_visible","subset","font","manager","default_font","textAlign","c","str_len","fillStyle","fillText","DiagonalHeatmapTrack","DiagonalHeatmapPainter","summary_draw_height","start_end_dct","set_painter_from_config","help","ArcLinkedFeaturePainter","LinkedFeaturePainter","all_incomplete_features","pluck","inc_features","tile_incomplete_features","omit","f","keys","size","features","new_canvas_ctx","drawImage","new_tile","update_ui_elt","example_feature","applies_to","show_more_rows_icon","incremental_slots","level","dummy_context","slotter","x","measureText","slot_features","canvas_width","rows_required","dummy_painter","get_required_height","ref_seq","cur_tile","filtered","slots","hide_feature","flen","update_attrs","keep","filter_alpha_scaler","alpha_filter","filter_height_scaler","height_filter","b","draw_results","translation","VariantPainter","num_samples","get_metadata","match","deferreds","fetch","sample_names","font_size","font-size","samples_div_html","line-height","ReadPainter","addable_objects","VcfTrack","template","drawable_type"],"mappings":"AAAAA,QACI,kBACA,oBACA,gBACA,qBACA,yBACA,yBACA,wBACA,mBACA,iBACA,eACA,oBACD,SAASC,EAAGC,EAAeC,EAAWC,EAAMC,EAAUC,EAAUC,EAAaC,EAAMC,EAAWC,GAuKjG,QAASC,GAAMC,EAAKC,GAEXA,IACDA,EAAS,EAGb,IAAIC,GAAMC,KAAKC,IAAI,GAAIH,EACvB,OAAOE,MAAKJ,MAAMC,EAAME,GAAOA,EA3KnC,GAAIG,GAAShB,EAAEgB,OAQXC,KAKAC,EAAe,SAASC,EAASC,GACjCH,EAAqBE,EAAQE,KAAK,OAASD,GAY3CE,EAAW,SAASH,EAASI,EAAcC,EAAoBC,GAE/DD,EAAqB,SAGrBP,EAAqBE,EAAQE,KAAK,OAASI,EAG3CN,EAAQO,KAAM,QAAUC,OAAQ,IAAMJ,EAAcK,UAAU,GAAQ,SAAWC,EAAGC,GAChF,GAKIC,GACAC,EACAC,EACAC,EACAC,EARAC,GADUC,EAAEC,MACHD,EAAEC,MAAMF,UAEjBG,EAAWH,EAAOG,SAAS,iBAC3BC,EAAWvB,EAAqBoB,EAAEC,MAAMjB,KAAK,MAcjD,IADAW,EAAYK,EAAEC,MAAMG,QAAQjB,GACH,IAArBQ,EAAUU,OAAc,CACxBT,EAAMD,EAAUW,WAAWV,IAC3BC,EAASD,EAAMD,EAAUY,aACzB,IAAIC,GAAgB5B,EAAqBe,EAAUX,KAAK,MACxD,IAAIS,EAAEgB,QAAUb,EAKZ,MAHAI,GAAEC,MAAMS,aAAaf,GACrBa,EAAcG,gBAAgBR,OAC9BK,GAAcb,UAAUiB,oBAAoBT,EAAUK,EAGrD,IAAIf,EAAEgB,QAAUZ,EAKjB,MAHAG,GAAEC,MAAMY,YAAYlB,GACpBa,EAAcG,gBAAgBR,OAC9BK,GAAcb,UAAUmB,aAAaX,GAO7C,IADAR,EAAY,KACNG,EAAI,EAAGA,EAAII,EAASG,OAAQP,IAK9B,GAJAJ,EAAQM,EAAEE,EAASa,IAAIjB,IACvBF,EAAMF,EAAMY,WAAWV,IACvBC,EAASD,EAAMF,EAAMa,cAEhBb,EAAMsB,GAAG7B,IAAuBc,OAASP,EAAMqB,IAAI,IACnDtB,EAAEgB,SAAWb,GAAOH,EAAEgB,SAAWZ,EAalC,MAXIJ,GAAEgB,QAAUb,EAAMC,EAASJ,EAAEgB,QAC7Bf,EAAMuB,KAAK,gBAAgBC,QAAQjB,MAGnCP,EAAMuB,KAAK,gBAAgBE,OAAOlB,MAGlCE,EAASR,WACTQ,EAASR,UAAUgB,gBAAgBR,OAEvCvB,GAAqBc,EAAMV,KAAK,OAAO8B,aAAaX,EAQ5D,KAAML,EAAI,EAAGA,EAAII,EAASG,SACtBX,EAAQM,EAAEE,EAASa,IAAIjB,MAClBL,EAAEgB,QAAUf,EAAMY,WAAWV,MAE3BF,EAAM0B,SAAS,oBAAsB1B,EAAM0B,SAAS,UAJ7BtB,KAY7BA,IAAMI,EAASG,OACXJ,OAASC,EAASa,IAAIjB,EAAI,KAC3BC,EAAOoB,OAAOlB,MACdrB,EAAqBmB,EAAOf,KAAK,OAAOqC,cAAclB,EAAUL,IAG9DG,OAASC,EAASa,IAAIjB,KAC5BE,EAAEC,MAAMS,aAAcR,EAASa,IAAIjB,IAGnClB,EAAqBmB,EAAOf,KAAK,OAAOqC,cAAclB,EAAWV,EAAE6B,OAAS,EAAIxB,EAAE,EAAIA,MAE3FT,KAAK,YAAa,WACjBW,EAAEC,MAAMsB,SAAS,cAClBlC,KAAK,UAAW,WACfW,EAAEC,MAAMuB,YAAY,eASxBC,EAAgB,GAEhBC,EAAoB,IAEpBC,EAAwB,KAExBC,EAAY,IACZC,EAA0B,IAE1BC,EAAwB,IACxBC,EAAa,2CACbC,EAAmB,4FACnBC,EAAY,iCACZC,EAAe,oJAEfC,EAAuB,yBAEvBC,EAAU,oBACVC,EAAkB,GAIlBC,GAAyB,YAAa,OAAQ,SAAU,aAkCxDC,EAAW,SAASC,EAAM7C,EAAW8C,GA0BrC,GAzBKF,EAASG,aAAcH,EAASG,WAAa,GAClDzC,KAAK0C,GAAKJ,EAASG,aACnBzC,KAAKuC,KAAOA,EACZvC,KAAKN,UAAYA,EACjBM,KAAK2C,kBAAoBH,EAASG,kBAClC3C,KAAK4C,aAAc,EACnB5C,KAAK6C,gBAGL7C,KAAK8C,OAAS3E,EAAW4E,wBAAwBC,6BAA6BhD,KAAKiD,cAAeT,EAASU,OAGtGlD,KAAK8C,OAAOK,UAAU,SACvBnD,KAAK8C,OAAOM,UAAU,OAAQZ,EAASa,MAEvCrD,KAAKsD,iBACLtD,KAAK8C,OAAOS,GAAG,SAAUvD,KAAKsD,gBAAiBtD,MAInDA,KAAKwD,cAAgBxD,KAAKyD,sBAC1BzD,KAAK0D,WAAa,KAIdlB,EAASmB,UAAW,EAAO,CAC3B,GAAIC,GAAc,GAAIhG,GAAUiG,iBAC5BC,MAAO9D,KACP0C,GAAI1C,KAAK0C,IAGb1C,MAAK0D,WAAaE,EAAYG,IAC9B/D,KAAKwD,cAActC,OAAOlB,KAAK0D,WAG/B,IAAIM,GAAYJ,EAAYI,SAC5BhE,MAAK6C,aAAee,EAAYf,aAChC7C,KAAKwD,cAAcS,MACf,WAAaD,EAAUE,QAAW,WAAaF,EAAUG,UAKrE7B,GAAS8B,UAAUC,mBAIXhB,KAAM,cACNiB,MAAO,oBACPC,UAAW,SACXC,YAAa,SAASC,GACbA,EAAS3B,OAAOK,UAAU,oBAC3BsB,EAAS5B,aAAa6B,YAAYpD,SAAS,iBAAiBC,YAAY,UACxEkD,EAASE,gBACTF,EAAS3B,OAAOM,UAAU,mBAAmB,KAG7CqB,EAAS5B,aAAa6B,YAAYpD,SAAS,UAAUC,YAAY,iBACjEkD,EAAS3B,OAAOM,UAAU,mBAAmB,GAC7CqB,EAASG,oBAMjBvB,KAAM,gBACNiB,MAAO,gBACPC,UAAW,OACXC,YAAa,SAASC,GAClB,GAAIlC,GAAO,GAAIpE,GAAW0G,6BACtBC,WAAYL,EAAS3B,QAEzBP,GAAKwC,gBAAgB,sBAKzB1B,KAAM,cACNiB,MAAO,SACPC,UAAW,cACXC,YAAa,SAASC,GAElB1E,EAAE,YAAYiF,SACdP,EAASO,YAKrBtG,EAAO4D,EAAS8B,WACZnB,gBACMgC,IAAK,OAAQC,MAAO,OAAQC,KAAM,OAAQC,cAAe,KACzDH,IAAK,kBAAmBE,KAAM,OAAQC,eAAe,EAAMC,QAAQ,IAGzE/B,gBAAiB,aAEjBgC,KAAM,aAENC,QAAS,WACLvF,KAAKuC,KAAKgD,WAGdC,SAAU,WACN,MAAIxF,MAAKyF,SAAWzF,KAAK8C,OAAOK,UAAU,oBAC/B,GAGJ,GAGXuC,aAAc,aAEdC,MAAO,aAMPC,QAAS,aAKTC,SAAU,SAASC,GACf9F,KAAK+F,SAAW/F,KAAK8C,OAAOK,UAAU,QACtCnD,KAAK8C,OAAOM,UAAU,OAAQ0C,IAMlCE,YAAa,WACLhG,KAAK+F,UACL/F,KAAK8C,OAAOM,UAAU,OAAQpD,KAAK+F,WAO3Cf,OAAQ,WACJhF,KAAKuF,UAELvF,KAAKN,UAAUgB,gBAAgBV,KAC/B,IAAIuC,GAAOvC,KAAKuC,IAChBvC,MAAKwD,cAAcW,KAAK,EAAG,WACvBpE,EAAEC,MAAMgF,SAERzC,EAAK0D,sBAObxC,oBAAqB,aAKrByC,aAAc,aAKdvB,cAAe,aAKfC,cAAe,aAKfuB,cAAe,cAMnB,IAAIC,GAAqB,SAAS7D,EAAM7C,EAAW8C,GAC/CF,EAAS+D,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAGrCxC,KAAKsG,SAAW9D,EAAS8D,SACzBtG,KAAKuG,aAGT7H,GAAO0H,EAAmBhC,UAAW9B,EAAS8B,WAI1CoC,iBAAkB,SAASC,GAEvBzG,KAAKuG,YAEL,KAAK,GADD9B,GACK5E,EAAI,EAAGA,EAAI4G,EAAgBrG,OAAQP,IACxC4E,EAAWiC,EAAqBD,EAAgB5G,GAAIG,KAAKuC,KAAMvC,MAC/DA,KAAKa,aAAa4D,IAO1Ba,KAAM,WACF,IAAK,GAAIzF,GAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvCG,KAAKuG,UAAU1G,GAAGyF,QAO1BK,MAAO,SAASgB,GACZ,IAAK,GAAI9G,GAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvCG,KAAKuG,UAAU1G,GAAG8F,MAAMgB,IAQhCf,QAAS,WAEL,IAAK,GADDgB,MACK/G,EAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvC+G,EAAoBC,KAAK7G,KAAKuG,UAAU1G,GAAG+F,UAE/C,QACI1C,MAAOlD,KAAK8C,OAAOgE,oBACnBR,SAAUtG,KAAKsG,SACfC,UAAWK,IAOnB/F,aAAc,SAAS4D,GACnBzE,KAAKuG,UAAUM,KAAKpC,GACpBA,EAAS/E,UAAYM,KACrBA,KAAKuF,WAMT5E,oBAAqB,SAAS8D,EAAUsC,GACpC/G,KAAKuF,SACL,IAAIyB,GAAQhH,KAAKuG,UAAUU,QAAQF,EACnC,OAAc,KAAVC,GACAhH,KAAKuG,UAAUW,OAAOF,EAAO,EAAGvC,IACzB,IAEJ,GAMX0C,iBAAkB,SAASC,EAAcC,EAAcC,GACnD,GAAIN,GAAQhH,KAAKuG,UAAUU,QAAQG,EAQnC,OAPc,KAAVJ,IACAhH,KAAKuG,UAAUS,GAASK,EACpBC,GACAF,EAAa5D,cAAc+D,YAAYF,EAAa7D,eAExDxD,KAAKuF,WAEFyB,GAMXtG,gBAAiB,SAAS+D,GACtB,GAAIuC,GAAQhH,KAAKuG,UAAUU,QAAQxC,EACnC,OAAc,KAAVuC,GAEAhH,KAAKuG,UAAUW,OAAOF,EAAO,GAC7BvC,EAAS/E,UAAY,KACrBM,KAAKuF,WACE,IAEJ,GAMXnE,cAAe,SAASqD,EAAU+C,GAC9B,GAAIR,GAAQhH,KAAKuG,UAAUU,QAAQxC,EACnC,OAAc,KAAVuC,GAEAhH,KAAKuG,UAAUW,OAAOF,EAAO,GAE7BhH,KAAKuG,UAAUW,OAAOM,EAAc,EAAG/C,GACvCzE,KAAKuF,WACE,IAEJ,GAMXY,cAAe,WACX,MAAOnG,MAAKuG,WAMhBkB,WAAY,SAASC,GAKjB,IAHA,GAEIjD,GAFAkD,EAAQ3H,KAAKuG,UAAUqB,MAAM,GAC7BC,KAEoB,IAAjBF,EAAMvH,QACTqE,EAAWkD,EAAMG,QACbrD,YAAoBiD,GACpBG,EAAOhB,KAAKpC,GAEPA,EAAS8B,YACdoB,EAAQA,EAAMI,OAAOtD,EAAS8B,WAGtC,OAAOsB,KAOf,IAAIG,GAAgB,SAASzF,EAAM7C,EAAW8C,GA+B1C,GA9BA9D,EAAO8D,GACH8D,SAAU,gBACV3D,kBAAmB,iBAEvByD,EAAmBC,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAK/CxC,KAAKiI,YAAclI,EAAE,UAAUuB,SAAS,eAAevC,KAAK,KAAM,SAAWiB,KAAK0C,GAAK,gBAAgBwF,SAASlI,KAAKwD,eACrH5E,EAAaoB,KAAKwD,cAAexD,MACjCpB,EAAaoB,KAAKiI,YAAajI,MAC/BhB,EAASgB,KAAKwD,cAAexD,KAAK2C,kBAAmB,SAAU3C,MAG/DA,KAAKmI,gBAAkB,GAAInK,GAAYoK,eAAepI,MACtDA,KAAK0D,WAAW2E,MAAMrI,KAAKmI,gBAAgBG,YAG3CtI,KAAKmI,gBAAgBG,WAAWD,MAAOtI,EAAE,+BAGzCC,KAAKuI,0BAGD,aAAe/F,IACfxC,KAAKwG,iBAAiBhE,EAAS+D,WAI/B,WAAa/D,GAAU,CAEvB,GAAIgG,GAAcxI,KAAKmI,eACvBnI,MAAKmI,gBAAkB,GAAInK,GAAYoK,eAAepI,KAAMwC,EAASiG,SACrED,EAAYF,WAAWf,YAAYvH,KAAKmI,gBAAgBG,YAEpD9F,EAASiG,QAAQC,SACjB1I,KAAK2I,8BAKjBjK,GAAOsJ,EAAc5D,UAAW9B,EAAS8B,UAAWgC,EAAmBhC,WACnEC,kBACI/B,EAAS8B,UAAUC,iBAAiB,GACpC/B,EAAS8B,UAAUC,iBAAiB,IAGhChB,KAAM,iBACNiB,MAAO,uBACPC,UAAW,eACXC,YAAa,SAASoE,GAClB7I,EAAE,YAAYiF,SACd4D,EAAMC,0BAKVxF,KAAM,eACNiB,MAAO,UACPC,UAAW,gBACXC,YAAa,SAASoE,GAEdA,EAAMT,gBAAgBO,WAEtBE,EAAMT,gBAAgBW,gBACtBF,EAAMG,6BAONH,EAAMD,6BACNC,EAAMlD,cAAesD,kBAAkB,KAE3CJ,EAAMT,gBAAgBc,WAG9B3G,EAAS8B,UAAUC,iBAAiB,IAGxCZ,oBAAqB,WACjB,GAAID,GAAgBzD,EAAE,UAAUuB,SAAS,SAASvC,KAAK,KAAM,SAAWiB,KAAK0C,GAI7E,OAHI1C,MAAKN,WACLM,KAAKN,UAAUuI,YAAY/G,OAAOsC,GAE/BA,GAGXmB,cAAe,WACX3E,KAAKkJ,UAAU/E,QAGnBS,cAAe,WAEX5E,KAAKkJ,UAAUhF,OAEflE,KAAK0F,gBAGTQ,aAAc,WAIV,GAAIiD,GAAgBnJ,KAAKuG,UAAUnG,MACnC,IAAsB,IAAlB+I,EACAnJ,KAAK6C,aAAauG,eAAejF,OACjCnE,KAAK6C,aAAawG,aAAalF,WAE9B,IAAsB,IAAlBgF,EACLnJ,KAAK6C,aAAauG,eAAeH,OAAOjJ,KAAKuG,UAAU,YAAc+C,IACrEtJ,KAAK6C,aAAawG,aAAalF,WAE9B,CAWD,GAAItE,GAAG0J,EAAG9E,EACN+E,GAAY,EACZC,EAASzJ,KAAKuG,UAAU,GAAGmD,WAC3BC,EAAqB,CACzB,KAAK9J,EAAI,EAAOsJ,EAAJtJ,EAAmBA,IAAK,CAEhC,GADA4E,EAAWzE,KAAKuG,UAAU1G,GACtB4E,EAASiF,aAAeD,EAAQ,CAChCG,eAAgB,CAChB,OAEAnF,YAAoBoF,IACpBF,IAeR,GAXIH,GAAaxJ,KAAKuG,UAAU,YAAcuD,GAC1C9J,KAAK6C,aAAauG,eAAelF,QAGjClE,KAAK6C,aAAauG,eAAejF,OACjCpE,EAAE,YAAYiF,UAMd2E,EAAqB,GAAKA,IAAuB3J,KAAKuG,UAAUnG,OAAQ,CAIxE,GACI2J,GADAC,IAKJ,KADAvF,EAAWzE,KAAKuG,UAAU,GACrBgD,EAAI,EAAGA,EAAI9E,EAAS0D,gBAAgBM,QAAQrI,OAAQmJ,IACrDQ,EAAStF,EAAS0D,gBAAgBM,QAAQc,GAC1CS,EAAeD,EAAO1G,OAAS0G,EAInC,KAAKlK,EAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IAEnC,IADA4E,EAAWzE,KAAKuG,UAAU1G,GACrB0J,EAAI,EAAGA,EAAI9E,EAAS0D,gBAAgBM,QAAQrI,OAAQmJ,IACrDQ,EAAStF,EAAS0D,gBAAgBM,QAAQc,GACtCQ,EAAO1G,OAAQ2G,IACfA,EAAeD,EAAO1G,MAAMwD,KAAKkD,EAS7C/J,MAAKmI,gBAAgB8B,YACrB,IACIxB,GACAyB,CAGJ,KAAK,GAAIC,KAAeH,GACpBvB,EAAUuB,EAAeG,GACrB1B,EAAQrI,SAAWuJ,IAGnBO,EAAa,GAAIlM,GAAYoM,cACb/G,KAAMoF,EAAQ,GAAGpF,KACjB2D,MAAOyB,EAAQ,GAAGzB,QAElChH,KAAKmI,gBAAgBkC,WAAWH,GAKxClK,MAAK6C,aAAawG,aAAaJ,OAAOjJ,KAAKmI,gBAAgBM,QAAQrI,OAAS,OAG5EJ,MAAK6C,aAAawG,aAAalF,SAQ3C4E,yBAA0B,WACtB,IAAK,GAAIlJ,GAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvCG,KAAKuG,UAAU1G,GAAGsI,gBAAkBnI,KAAKuI,uBAAuB1I,EAEpEG,MAAKuI,2BAMTI,2BAA4B,WAExB,GAAI3I,KAAKmI,gBAAgBM,QAAQrI,OAAS,EAAG,CAEzCJ,KAAKuI,yBACL,KAAK,GAAI1I,GAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvC4E,SAAWzE,KAAKuG,UAAU1G,GAC1BG,KAAKuI,uBAAuB1B,KAAKpC,SAAS0D,iBAC1C1D,SAAS0D,gBAAkBnI,KAAKmI,gBAKxCnI,KAAKmI,gBAAgBmC,gBAMzBzB,qBAAsB,WAClB,CAAA,GAAI0B,GAAkB,GAAIjB,GAAetJ,KAAKuC,KAAMvC,KAAKuC,MACrDc,KAAMrD,KAAK8C,OAAOK,UAAU,QAC5BoD,UAAWvG,KAAKuG,WAERvG,MAAKN,UAAUyH,iBAAiBnH,KAAMuK,GAAiB,GACnEA,EAAgB7E,gBAGpB7E,aAAc,SAAS4D,GACnB2B,EAAmBhC,UAAUvD,aAAawF,KAAKrG,KAAMyE,GACrDzE,KAAKkG,gBAGTxF,gBAAiB,SAAS+D,GACtB2B,EAAmBhC,UAAU1D,gBAAgB2F,KAAKrG,KAAMyE,GACxDzE,KAAKkG,gBAGTN,QAAS,WAED5F,KAAKmI,gBAAgBO,WACrB1I,KAAK+I,0BAGT,IAAIvG,GAAW9D,EAAO0H,EAAmBhC,UAAUwB,QAAQS,KAAKrG,OAASyI,QAAWzI,KAAKmI,gBAAgBvC,WAOzG,OAJI5F,MAAKmI,gBAAgBO,WACrB1I,KAAK2I,6BAGFnG,GAGXkD,aAAc,SAASiB,GACnBjJ,EAAE8M,KAAKxK,KAAKuG,UAAW,SAAS/G,GAC5BA,EAAEkG,aAAaiB,OAU3B,IAAI8D,GAAgBC,SAASC,KAAKjM,QAE9BkM,WAAY,SAASpI,GACjB9D,EAAO8D,GACH8D,SAAU,SAEdF,EAAmBC,KAAKrG,KAAM,OAAQwC,EAAS9C,UAAW8C,GAC1DxC,KAAK6K,MAAQ,KACb7K,KAAK8K,OAAStI,EAASsI,OACvB9K,KAAK+K,MAAQvI,EAASuI,MACtB/K,KAAKgL,YAAwCC,SAAzBzI,EAASwI,YAA4BxI,EAASwI,aAAc,EAChFhL,KAAKkL,gBACLlL,KAAKmL,wBACLnL,KAAKoL,QAAU,EACfpL,KAAKqL,SAAW,EAChBrL,KAAKsL,YAAc,EACnBtL,KAAKuL,eAAiB,GACtBvL,KAAKwL,aAAc,EAEnBxL,KAAKyL,qBAAuB,KAC5BzL,KAAK0L,SACL1L,KAAK2L,eAAiB,GAAIhO,GAAciO,cAAe5L,KAAKN,UAAUoB,IAAI,GAAG+K,eAC7E7L,KAAK8L,QAGL9L,KAAK8C,OAAS3E,EAAW4E,wBAAwBC,+BACvCiC,IAAK,OAAQC,MAAO,OAAQC,KAAM,OAAQC,cAAe,KACzDH,IAAK,UAAWC,MAAO,UAAWC,KAAM,QAASC,cAAe,YAChEH,IAAK,UAAWC,MAAO,UAAWC,KAAM,QAASC,cAAe,YAChEH,IAAK,UAAWC,MAAO,UAAWC,KAAM,QAASC,cAAe,YAChEH,IAAK,UAAWC,MAAO,UAAWC,KAAM,QAASC,cAAe,YAChEH,IAAK,UAAWC,MAAO,UAAWC,KAAM,QAASC,cAAe,aACjE/B,KAAMb,EAASa,QAG5BqI,OAAQ,WAEJ1L,KAAK+L,kBAAmB,CAGxB,IAAIC,GAAiBhM,KAAKN,UACtB6C,EAAOvC,IAEXA,MAAKiM,cAAgBlM,EAAE,UAAUuB,SAAS,iBAAiB4G,SAAS8D,GAEpEhM,KAAKkM,oBAAsBnM,EAAE,UAAUuB,SAAS,WAAW4G,SAAS8D,GAEpEhM,KAAKmM,iBAAmBpM,EAAE,UAAUuB,SAAS,oBAAoB4G,SAAS8D,GAE1EhM,KAAKoM,eAAiBrM,EAAE,UAAUuB,SAAS,kBAAkB4G,SAASlI,KAAKiM,eAE3EjM,KAAKqM,mBAAqBtM,EAAE,UAAUuB,SAAS,sBAAsBvC,KAAK,KAAM,sBAAsBmJ,SAASlI,KAAKkM,qBAEpHlM,KAAKiI,YAAcjI,KAAKqM,mBACxBzN,EAAaoB,KAAKqM,mBAAoB9J,GAEtCvC,KAAKsM,UAAYvM,EAAE,UAAUuB,SAAS,SAAS4G,SAASlI,KAAKqM,mBACrCtM,GAAE,UAAUwM,KAAK,iCAAiCjL,SAAS,iBAAiB4G,SAASlI,KAAKsM,WAAWE,MAAM,WAC/H7O,EAAc8O,gBAAgBC,OAAOC,KAAO,8CAA+CD,OAAOC,KAAO,gBAAkBC,UAAWrK,EAAKwI,OAAS,SAASlD,GACzJnK,EAAE8M,KAAK3C,EAAQ,SAASgF,GACpBtK,EAAK1B,aAAc6F,EAAqBmG,EAAOtK,EAAMA,SAMjEvC,MAAK8M,cAAgB/M,EAAE,UAAUuB,SAAS,2BAA2ByL,UAAU/M,KAAKiM,eACpFjM,KAAKgN,IAAMjN,EAAE,UAAUuB,SAAS,iBAAiB4G,SAASlI,KAAK8M,eAE3D9M,KAAKgL,cACLhL,KAAK8M,cAAcxL,SAAS,eAC5BtB,KAAKgN,IAAI1L,SAAS,gBAItBtB,KAAKiN,SAAWlN,EAAE,UAAUuB,SAAS,YAAY4G,SAASlI,KAAKmM,kBAC/DnM,KAAKkN,kBAAoBnN,EAAE,UAAUuB,SAAS,qBAAqB4G,SAASlI,KAAKiN,UACjFjN,KAAKmN,eAAiBpN,EAAE,QAAQhB,KAAK,QAAS,kBACduC,SAAS,sCACT6C,OACA+D,SAASlI,KAAKkN,mBAC9ClN,KAAKoN,mBAAqBrN,EAAE,UAAUuB,SAAS,sBAAsB6C,OAAO+D,SAASlI,KAAKkN,mBAC1FlN,KAAKqN,wBAA0BtN,EAAE,UAAUuB,SAAS,oBAAoB4G,SAASlI,KAAKkN,mBACtFlN,KAAKsN,aAAevN,EAAE,UAAUuB,SAAS,gBAAgB4G,SAASlI,KAAKkN,mBACvElN,KAAKuN,wBAA0BvN,KAAKsN,aAAaE,SAEjDxN,KAAKyN,aAAe1N,EAAE,UAAUuB,SAAS,gBAAgB4G,SAASlI,KAAKgN,KACvEhN,KAAK0N,aAAe3N,EAAE,aAAahB,MAAOsE,KAAQ,UAAU/B,SAAS,aAAaJ,OAAO,qCAAqCgH,SAASlI,KAAKyN,aAC5I,IAAIE,GAAa,SAASpO,IACP,aAAXA,EAAE4F,MAAkD,MAA1B5F,EAAEqO,SAAWrO,EAAEsO,QAA4C,MAA1BtO,EAAEqO,SAAWrO,EAAEsO,UAC3C,MAA1BtO,EAAEqO,SAAWrO,EAAEsO,QAChBtL,EAAKuL,MAAO/N,EAAEC,MAAMzB,OAExBwB,EAAEC,MAAMmE,OACRpE,EAAEC,MAAMzB,IAAI,IACZgE,EAAKwL,cAAc7J,OACnB3B,EAAKmL,aAAaxJ,QAItB3E,EAAEyO,kBAENhO,MAAKiO,UAAYlO,EAAE,YAAYuB,SAAS,aAAa6C,OAAO/E,KAAK,iBAAkBuO,GAAYzF,SAASlI,KAAKyN,cAC7GzN,KAAK+N,cAAgBhO,EAAE,WAAWuB,SAAS,YAAYvC,KAAK,QAAS,4BAA4BmP,SAAWC,UAAW,WAAajG,SAASlI,KAAKyN,cAClJzN,KAAK+N,cAAcvB,MAAM,WACrBjK,EAAKwL,cAAc5J,OACnB5B,EAAKmL,aAAavJ,OAClB5B,EAAK0L,UAAU1P,IAAIgE,EAAKsI,MAAQ,IAAMtI,EAAK6L,IAAM,IAAM7L,EAAK8L,MAC5D9L,EAAK0L,UAAUK,IAAI,UAAW,gBAC9B/L,EAAK0L,UAAUM,SACfhM,EAAK0L,UAAUO,QAEfjM,EAAK0L,UAAUQ,cACXC,OAAQ,SAASC,EAASC,GAEtB,GAAIC,MACAC,EAA2B/O,EAAEgP,IAAIxM,EAAKkF,WAAWoC,GAAe,SAASmF,GACzE,MAAOA,GAAEC,aAAaC,gBAAgBP,EAAQQ,MAAMC,QAAQ,SAASC,GACjER,EAAeA,EAAa9G,OAAOsH,MAK3CtP,GAAEuP,KAAKC,MAAMxP,EAAG+O,GAA0BU,KAAK,WAC3CZ,EAAS7O,EAAEgP,IAAIF,EAAc,SAASY,GAClC,OACIvK,MAAOuK,EAAQ,GACfC,MAAOD,EAAQ,UAK/BE,UAAW,MAGC1E,SAAhBjL,KAAK8K,SACL9K,KAAK4P,aAAe7P,EAAE,YAAYhB,KAAK,OAAQ,UAAUR,IAAIyB,KAAK8K,QAAQ5C,SAASlI,KAAKyN,eAG5FzN,KAAK6P,QAAU9P,EAAE,QAAQhB,KAAK,KAAM,YAAYA,KAAK,QAAS,YAAYmP,SAAUC,UAAW,WACtE3B,MAAM,WAAajK,EAAKuN,aAAe5H,SAASlI,KAAKyN,cAC9EzN,KAAK+P,QAAUhQ,EAAE,QAAQhB,KAAK,KAAM,WAAWA,KAAK,QAAS,WAAWmP,SAAUC,UAAW,WACpE3B,MAAM,WAAajK,EAAKyN,YAAc9H,SAASlI,KAAKyN,cAG7EzN,KAAKyL,qBAAuBzL,KAAKiQ,aAAa7B,IAAK,IACnDpO,KAAK0N,aAAatO,KAAK,SAAU,WAC7BmD,EAAK2N,aAAa3N,EAAKmL,aAAanP,SAkBxCyB,KAAKkM,oBAAoBM,MAAM,WAC3BzM,EAAEC,MAAMgB,KAAK,SAASmP,QAAQ,UAIlCnQ,KAAKkM,oBAAoB9M,KAAK,WAAY,SAAUG,GAChDgD,EAAKyN,QAAQzQ,EAAE6Q,MAAOpQ,KAAKqM,sBAI/BrM,KAAKsN,aAAalO,KAAK,YAAa,SAAUG,EAAGC,GAC7CQ,KAAKqQ,UAAY7Q,EAAE8Q,UACpBlR,KAAK,OAAQ,SAAUG,EAAGC,GACzB,GAAI+Q,GAAQ/Q,EAAE8Q,QAAUtQ,KAAKqQ,SAC7BrQ,MAAKqQ,UAAY7Q,EAAE8Q,OACnB,IAAIE,GAAchS,KAAKJ,MAAMmS,EAAQhO,EAAK8J,mBAAmBoE,SAAWlO,EAAK8I,SAAW9I,EAAK6I,SAC7F7I,GAAKmO,YAAYF,KAGrBxQ,KAAKmN,eAAeX,MAAM,WACtBjK,EAAKoO,mBAIT3Q,KAAKqM,mBAAmBjN,KAAM,WAAY,SAAUG,GAEhD,MAAKA,GAAEqR,QAAUrO,EAAK8J,mBAAmBoE,QAAU,IACxC,EADX,SAGDrR,KAAM,YAAa,SAAUG,EAAGC,GAC/BA,EAAEqR,aAAetO,EAAK6L,IACtB5O,EAAEsR,eAAiBvR,EAAEwR,QACrBvR,EAAE6Q,UAAY7Q,EAAE8Q,UACjBlR,KAAM,OAAQ,SAAUG,EAAGC,GAC1B,GAAIE,GAAYK,EAAEC,MACduQ,EAAQ/Q,EAAE8Q,QAAU9Q,EAAE6Q,UACtBW,EAAatR,EAAUuR,aAAe1R,EAAEwR,QAAUvR,EAAEsR,eACxDpR,GAAUuR,UAAUD,GACpBxR,EAAEsR,eAAiBvR,EAAEwR,QACrBvR,EAAE6Q,UAAY7Q,EAAE8Q,OAChB,IAAIE,GAAchS,KAAKJ,MAAMmS,EAAQhO,EAAK8J,mBAAmBoE,SAAWlO,EAAK8L,KAAO9L,EAAK6L,KACzF7L,GAAKmO,WAAWF,KAkBpBxQ,KAAKoM,eAAehN,KAAM,YAAa,WACnC,MAAOW,GAAE,UAAUuB,SAAS,aAAagN,IACrC,SAAU/L,EAAK2J,oBAAoBsB,SAAWjL,EAAK6J,eAAeoB,SAAW,GAC/EtF,SAAUnI,EAAEC,SACfZ,KAAM,OAAQ,SAAUG,EAAGC,GAC1BO,EAAGP,EAAE0R,OAAQ5C,KAAM6C,KAAM3S,KAAK4S,IAAK7R,EAAE6Q,MAAO5Q,EAAE6R,QAAW9O,EAAK7C,UAAU4R,SAASH,KAAMV,MAAOjS,KAAK+S,IAAKhS,EAAE6Q,MAAQ5Q,EAAE6R,SACpH,IAAID,GAAM5S,KAAK4S,IAAI7R,EAAE6Q,MAAO5Q,EAAE6R,QAAW9O,EAAK7C,UAAU4R,SAASH,KAC7DK,EAAMhT,KAAKgT,IAAIjS,EAAE6Q,MAAO5Q,EAAE6R,QAAW9O,EAAK7C,UAAU4R,SAASH,KAC7DM,EAAQlP,EAAK8L,KAAO9L,EAAK6L,IACzBqC,EAAQlO,EAAK8J,mBAAmBoE,OACpClO,GAAKmP,gBAAiBlT,KAAKJ,MAAMgT,EAAMX,EAAQgB,GAAQlP,EAAK6L,IACtC5P,KAAKJ,MAAMoT,EAAMf,EAAQgB,GAAQlP,EAAK6L,OAC7DhP,KAAM,UAAW,SAAUG,EAAGC,GAC7B,GAAI4R,GAAM5S,KAAK4S,IAAI7R,EAAE6Q,MAAO5Q,EAAE6R,QAC1BG,EAAMhT,KAAKgT,IAAIjS,EAAE6Q,MAAO5Q,EAAE6R,QAC1BI,EAAQlP,EAAK8L,KAAO9L,EAAK6L,IACzBqC,EAAQlO,EAAK8J,mBAAmBoE,QAChCkB,EAAUpP,EAAK6L,GACnB7L,GAAK6L,IAAM5P,KAAKJ,MAAMgT,EAAMX,EAAQgB,GAAQE,EAC5CpP,EAAK8L,KAAO7P,KAAKJ,MAAMoT,EAAMf,EAAQgB,GAAQE,EAC7C5R,EAAEP,EAAE0R,OAAOlM,SACXzC,EAAKqP,mBA0BT5R,KAAK6R,gBAAiB,GAAIC,GAAY9R,MAAQiI,YAAajI,KAAKoM,kBAEhErM,EAAEgS,QAAQ3S,KAAK,SAAU,WAEjBY,KAAKgS,cACLC,aAAajS,KAAKgS,cAItBhS,KAAKgS,aAAeE,WAAW,WAC3B3P,EAAK4P,iBACN,OAEPpS,EAAEqS,UAAUhT,KAAK,SAAU,WAAamD,EAAK8P,WAE7CrS,KAAK8L,QACL/L,EAAEgS,QAAQ5B,QAAQ,WAGtBmC,eAAgB,SAASC,GACrB,MAAOvS,MAAK8C,OAAOK,UAAUoP,EAAKC,cAAgB,WAC3CxS,KAAK8C,OAAOK,UAAU,aAMrCzE,GAAQ+L,EAAcrG,UAAWgC,EAAmBhC,WAEhDmB,QAAS,WACLvF,KAAKwL,aAAc,GAIvBvF,iBAAkB,WACdjG,KAAKsM,UAAUrD,OAAiC,IAA1BjJ,KAAKuG,UAAUnG,SAOzCqS,iBAAkB,SAASC,EAAWC,EAASC,EAAUC,GAMrD,GAJI7S,KAAK8S,OACLb,aAAajS,KAAK8S,OAGlBD,EAAO,CAGP,GAAIE,GAAO/S,IACXA,MAAK8S,MAAQZ,WAAW,WACpBa,EAAK5C,QAAQ,WAAYuC,EAAY,IAAMC,EAAU,IAAMC,IAC5D,SAGHrQ,MAAK4N,QAAQ,WAAYuC,EAAY,IAAMC,EAAU,IAAMC,IAInElB,gBAAiB,SAAStD,EAAKC,GAC3BrO,KAAK+N,cAAcxB,KAAM1O,EAAKmV,UAAU5E,GAAO,MAAQvQ,EAAKmV,UAAU3E,IACtErO,KAAKiO,UAAU1P,IAAKyB,KAAK6K,MAAQ,IAAMhN,EAAKmV,UAAU5E,GAAO,IAAMvQ,EAAKmV,UAAU3E,GAIlF,IAAIxD,GAAQ7K,KAAK0N,aAAanP,KAChB,MAAVsM,GACA7K,KAAKyS,iBAAiB5H,EAAO7K,KAAKoO,IAAKpO,KAAKqO,MAAM,IAQ1D4B,YAAa,SAASgD,GAClBA,EAAU5U,IAAMwD,CAEhB,IACIU,GAAOvC,KACPkT,EAAanT,EAAEoT,UAsCnB,OArCApT,GAAEqT,MACEC,IAAK3G,OAAOC,KAAO,eAAiB3M,KAAK+K,MACzC9M,KAAMgV,EACNK,SAAU,OACVlE,QAAS,SAAUmE,GAEf,GAAiC,IAA7BA,EAAOC,WAAWpT,OAAtB,CAKA,GAAImT,EAAOE,UAAW,CAClB,GAAIC,GAAY,GAAIC,GAAepR,EACnCA,GAAKsP,gBAAgB6B,GACrBnR,EAAKqR,gBAAkBF,EAE3BnR,EAAK2Q,WAAaK,EAAOC,UAEzB,KAAK,GADDK,GAAgB,gDACXhU,EAAI,EAAGiU,EAAMvR,EAAK2Q,WAAW9S,OAAY0T,EAAJjU,EAASA,IAAK,CACxD,GAAIgL,GAAQtI,EAAK2Q,WAAWrT,GAAGgL,KAC/BgJ,IAAiB,kBAAoBhJ,EAAQ,KAAOA,EAAQ,YAE5D0I,EAAOQ,cACPF,GAAiB,qCAAuChS,EAAwB,aAEhF0R,EAAOS,cACPH,GAAiB,6BAA+BhS,EAAwB,aAE5EU,EAAKmL,aAAauG,KAAKJ,GACvBtR,EAAK2R,kBAAoBX,EAAOY,YAEhCjB,EAAWkB,QAAQb,EAAOC,cAE9Ba,MAAO,WACHC,MAAM,yCAA2C/R,EAAKwI,UAGvDmI,GAGXhD,aAAc,SAASrF,EAAOuD,EAAKC,GAC/B,GAAI9L,GAAOvC,IAEX,KAAKuC,EAAK2Q,WAIN,WAHA3Q,GAAKkJ,qBAAqB8I,KAAK,WAC3BhS,EAAK2N,aAAarF,EAAOuD,EAAKC,IAMtC,IAAKxD,GAAmB,SAAVA,EAAd,CAOA,GAAc,aAAVA,EAEA,WADAtI,GAAK0N,aAAa7B,IAAKpO,KAAKkU,kBAAoBrS,GAGpD,IAAc,SAAVgJ,EAEA,WADAtI,GAAK0N,aAAa7B,IAAKpO,KAAKkU,kBAAoBrS,GAQpD,IAAI2S,GAAQzU,EAAE0U,KAAKlS,EAAK2Q,WAAY,SAASwB,GACzC,MAAOA,GAAE7J,QAAUA,IACpB,EACH,IAAcI,SAAVuJ,EAGA,WADAjS,GAAK0N,aAAapF,MAASA,GAAQ,WAAatI,EAAK2N,aAAarF,EAAOuD,EAAKC,IAK9E,IAAIxD,IAAUtI,EAAKsI,MAAO,CACtBtI,EAAKsI,MAAQA,EACbtI,EAAKmL,aAAanP,IAAIgE,EAAKsI,OAC3BtI,EAAK8I,SAAWmJ,EAAMV,IAAI,EAC1BvR,EAAKuJ,OAEL,KAAK,GAAIjM,GAAI,EAAGiU,EAAMvR,EAAKgE,UAAUnG,OAAY0T,EAAJjU,EAASA,IAAK,CACvD,GAAI4E,GAAWlC,EAAKgE,UAAU1G,EAC1B4E,GAASa,MACTb,EAASa,OAGb/C,EAAKqR,iBACLrR,EAAKqR,gBAAgBtO,OAKjB2F,SAARmD,GAA8BnD,SAAToD,GAErB9L,EAAK6L,IAAM,EACX7L,EAAK8L,KAAO9L,EAAK8I,WAIjB9I,EAAK6L,IAAenD,SAARmD,EAAoB5P,KAAKgT,IAAIpD,EAAK,GAAK,EACtCnD,SAAToD,GAGA9L,EAAK6L,IAAM5P,KAAKgT,IAAIjP,EAAK6L,IAAM,GAAI,GACnC7L,EAAK8L,KAAO9L,EAAK6L,IAAM,IAIvB7L,EAAK8L,KAAO7P,KAAK4S,IAAI/C,EAAM9L,EAAK8I,WAIxC9I,EAAKqP,mBAgBb9D,MAAO,SAAS6G,GAEZA,EAAMA,EAAIC,QAAQ,KAAM,IAGxBD,EAAMA,EAAIC,QAAQ,QAAS,IAG3B,IAAIC,GAAYF,EAAIG,MAAM,OACtBjK,EAAQgK,EAAU,GAClBlC,EAAWkC,EAAU,GAAKE,SAASF,EAAU,GAAI,IAAM5J,OACvD2H,EAAYiC,EAAU,GAAKE,SAASF,EAAU,GAAI,IAAM5J,MAE5DjL,MAAKkQ,aAAarF,EAAO8H,EAASC,IAGtCoC,cAAe,SAASC,GACpB,GAAI1S,GAAOvC,KACPyR,EAAOlP,EAAK8L,KAAO9L,EAAK6L,GAC5BpO,MAAK0Q,WAAWuE,EAAWxD,IAG/Bf,WAAY,SAASF,GAKjB,GAAIjO,GAAOvC,KACPkV,EAAqB3S,EAAK8L,KAAO9L,EAAK6L,GAEtC7L,GAAK6L,IAAMoC,EAAcjO,EAAK6I,SAC9B7I,EAAK6L,IAAM7L,EAAK6I,QAChB7I,EAAK8L,KAAO9L,EAAK6I,QAAU8J,GACpB3S,EAAK8L,KAAOmC,EAAcjO,EAAK8I,UACtC9I,EAAK8L,KAAO9L,EAAK8I,SACjB9I,EAAK6L,IAAM7L,EAAK8I,SAAW6J,IAE3B3S,EAAK8L,MAAQmC,EACbjO,EAAK6L,KAAOoC,GAQhBjO,EAAKqP,gBAAiBuD,YAAY,IAG9BnV,KAAKoV,mBACLnD,aAAajS,KAAKoV,mBAGtBpV,KAAKoV,kBAAoBlD,WAAW,WAChC3P,EAAKqP,kBACN,IAGH,IAAI/G,GAAQtI,EAAKmL,aAAanP,KAC9ByB,MAAKyS,iBAAiB5H,EAAOtI,EAAK6L,IAAK7L,EAAK8L,MAAM,IAMtDxN,aAAc,SAAS4D,GACnB2B,EAAmBhC,UAAUvD,aAAawF,KAAKrG,KAAMyE,GACrDA,EAASa,OACTtF,KAAKuF,UACLvF,KAAKiG,kBAIL,IAAI8M,GAAO/S,IACXyE,GAAS3B,OAAOS,GAAG,SAAU,WACzBwP,EAAKxN,aAIbsM,gBAAiB,SAAUwD,GACvBA,EAAY9S,KAAOvC,KACnBqV,EAAY/P,OACZtF,KAAKkL,aAAarE,KAAKwO,IAM3B3U,gBAAiB,SAAS+D,EAAUN,GAEhC,GADAiC,EAAmBhC,UAAU1D,gBAAgB2F,KAAKrG,KAAMyE,GACpDN,EAAM,CACN,GAAI5B,GAAOvC,IACXyE,GAASjB,cAAcW,KAAK,EAAG,WAC3BpE,EAAEC,MAAMgF,SACRzC,EAAK0D,uBAKjB6F,MAAO,WACH9L,KAAKoO,IAAMpO,KAAKoL,QAChBpL,KAAKqO,KAAOrO,KAAKqL,SACjBrL,KAAKqM,mBAAmBrL,KAAK,eAAegE,UAOhD4M,eAAgB,SAASjL,EAASlC,GAC9B,GAAIlC,GAAOvC,KAEPsV,EAAc7Q,GAAYA,GAAYlC,EAAKgE,SAG/C7I,GAAE8M,KAAK8K,EAAY,SAASzI,GACxB,GAAI0I,GAAgB7X,EAAEsD,KAAKuB,EAAK4I,qBAAsB,SAASqK,GAC3D,MAAOA,GAAG,KAAO3I,GAGjB0I,GAEAA,EAAc,GAAK5O,EAInBpE,EAAK4I,qBAAqBtE,MAAMgG,EAAOlG,MAK1C3G,KAAK+L,mBACN0J,sBAAsB,WAAalT,EAAKmT,YACxC1V,KAAK+L,kBAAmB,IAShC2J,QAAS,WAIL1V,KAAK+L,kBAAmB,CAExB,IAAIqC,GAAMpO,KAAKoO,IACXC,EAAOrO,KAAKqO,IAEZD,GAAMpO,KAAKoL,UACXgD,EAAMpO,KAAKoL,SAEXiD,EAAOrO,KAAKqL,WACZgD,EAAOrO,KAAKqL,SAEhB,IAAIoG,GAAOzR,KAAKqO,KAAOrO,KAAKoO,GACV,KAAdpO,KAAKqO,MAAcoD,EAAOzR,KAAKuL,iBAC/B8C,EAAOD,EAAMpO,KAAKuL,gBAEtBvL,KAAKoO,IAAM5P,KAAKmX,MAAMvH,GACtBpO,KAAKqO,KAAO7P,KAAKoX,KAAKvH,GAEtBrO,KAAK0R,gBAAgB1R,KAAKoO,IAAKpO,KAAKqO,MAKpCrO,KAAK6V,gBAAkB7V,KAAKqM,mBAAmBoE,SAAWzQ,KAAKqO,KAAOrO,KAAKoO,IAG3E,IAAI0H,GAAY9V,KAAKoO,KAAOpO,KAAKqL,SAAWrL,KAAKoL,SAAWpL,KAAKkN,kBAAkBuD,SAAa,EAC5FsF,GAAc/V,KAAKqO,KAAOrO,KAAKoO,MAAMpO,KAAKqL,SAAWrL,KAAKoL,SAAWpL,KAAKkN,kBAAkBuD,SAAa,EACzGuF,EAAe,EAEnBhW,MAAKsN,aAAagB,KAAM6C,KAAM2E,EAASrF,MAAOjS,KAAKgT,IAAIwE,EAAcD,KAAa7R,OACnE8R,EAAXD,GACA/V,KAAKsN,aAAagB,IAAI,OAAQwH,GAAWE,EAAeD,GAAU,GAElE/V,KAAKoN,oBACLpN,KAAKoN,mBAAmBkB,KAAM6C,KAAM2E,EAASrF,MAAOsF,IAIxDrY,EAAE8M,KAAKxK,KAAKmL,qBAAsB,SAASoK,GACvC,GAAI1I,GAAQ0I,EAAc,GACtB5O,EAAU4O,EAAc,EACxB1I,IACAA,EAAMlH,MAAMgB,KAGpB3G,KAAKmL,wBAGLzN,EAAE8M,KAAKxK,KAAKkL,aAAc,SAASmK,GAC/BA,EAAY1P,WAIpBqK,QAAS,SAAUiG,GACf,KAAsB,IAAlBjW,KAAKqL,UAAkBrL,KAAKqO,KAAOrO,KAAKoO,KAAOpO,KAAKuL,gBAAxD,CAGA,GAAIkG,GAAOzR,KAAKqO,KAAOrO,KAAKoO,IACxB8H,EAAazE,EAAO,EAAIzR,KAAKoO,IAC7B+H,EAAY1E,EAAOzR,KAAKsL,YAAe,CACvC2K,KACAC,EAAaD,EAAQjW,KAAKqM,mBAAmBoE,SAAWzQ,KAAKqO,KAAOrO,KAAKoO,KAAOpO,KAAKoO,KAEzFpO,KAAKoO,IAAM5P,KAAKJ,MAAM8X,EAAaC,GACnCnW,KAAKqO,KAAO7P,KAAKJ,MAAM8X,EAAaC,GAEpCnW,KAAKuF,UACLvF,KAAK4R,mBAGT9B,SAAU,WACN,GAAsB,IAAlB9P,KAAKqL,SAAT,CAGA,GAAIoG,GAAOzR,KAAKqO,KAAOrO,KAAKoO,IACxB8H,EAAazE,EAAO,EAAIzR,KAAKoO,IAC7B+H,EAAY1E,EAAOzR,KAAKsL,YAAe,CAC3CtL,MAAKoO,IAAM5P,KAAKJ,MAAM8X,EAAaC,GACnCnW,KAAKqO,KAAO7P,KAAKJ,MAAM8X,EAAaC,GACpCnW,KAAKuF,UACLvF,KAAK4R,mBAITwE,gBAAiB,WACbpW,KAAKqM,mBAAmBmB,OAAQxN,KAAKN,UAAU8N,SAAWxN,KAAKiM,cAAcuB,SAAWxN,KAAKmM,iBAAiBqB,WAIlH2E,cAAe,WACXnS,KAAKoW,kBACLpW,KAAK4R,kBAITyE,aAAc,SAAS5R,GACnB,GAAIzE,KAAKsW,kBAAmB,CAGxB,GAAItW,KAAKsW,kBAAkBC,QAAQ7T,KAAO+B,EAAS8R,QAAQ7T,GACvD,MAEJ1C,MAAKkN,kBAAkBlM,KAAK,UAAUgE,SAI1C,GACIsR,GAAoB7R,EAAS+R,MAAQvO,YAAajI,KAAKkN,oBACvD3K,EAAOvC,IACXsW,GAAkB5S,WAAWS,OAC7BmS,EAAkB1T,aAAc,EAChCL,EAAK+T,kBAAoBA,EACzBtW,KAAKsW,kBAAkBG,iBAAmB,WACtClU,EAAK6K,mBAAmBlJ,OAAOsJ,OAAOjL,EAAK+T,kBAAkBrO,YAAYuF,UACzEjL,EAAK2K,kBAAkBM,OAAOjL,EAAK+T,kBAAkBrO,YAAYuF,SAAWjL,EAAK+K,aAAahN,eAC9FiC,EAAK4K,eAAejJ,OACpB3B,EAAK4P,iBAET5P,EAAK+T,kBAAkB5Q,eACvB1F,KAAKuF,WAIToL,eAAgB,WAEZ5Q,EAAE,YAAYiF,SACdhF,KAAKkN,kBAAkBlM,KAAK,eAAegE,SAC3ChF,KAAKkN,kBAAkBM,OAAOxN,KAAKuN,yBACnCvN,KAAKsN,aAAaE,OAAOxN,KAAKuN,yBAC9BvN,KAAKmN,eAAehJ,OACpBnE,KAAKoN,mBAAmBjJ,OACxB5B,KAAK4P,gBACL5P,KAAK+T,kBAAoB,OAOjC,IAAII,GAAgBxY,EAAUyY,KAAKjY,QAC/BkY,UACI/J,MAAO,MAGXjC,WAAY,SAASjE,GACjBzI,EAAUyY,KAAKvS,UAAUwG,WAAWvE,KAAKrG,KAAM2G,EAG/C,IAAItB,IAAS,CACc4F,UAAvBtE,EAAQkQ,YAA0D5L,SAA9BtE,EAAQkQ,WAAWxR,SACvDA,EAASsB,EAAQkQ,WAAWxR,QAEhCrF,KAAK8W,IAAI,SAAUzR,GAKnBrF,KAAK+W,eAAiB,OAAQ,cAAe,iBAGjDC,WAAY,WACR,MAAOtZ,GAAEgB,OAAQsB,KAAKiX,mBAAqB5R,QAASrF,KAAKkX,kBAO5DC,EAAoBzM,SAASC,KAAKjM,QAEnC0Y,QACIC,gBAAiB,gBAGrB3L,OAAQ,WACJ,GAAI4L,GAAYtX,KAAK+D,IAAIzC,SAAS,aAC9BiW,EAAQvX,KAAK8D,MAKb0T,GAFYzX,EAAE,SAASuB,SAAS,eAAeiL,KAAKgL,EAAMzW,IAAI,UAAUoH,SAASoP,GAEtEvX,EAAE,UAAUuB,SAAS,eAAe2S,KAAKsD,EAAMzW,IAAI,SAASoH,SAASoP,GAEpFE,GAASxW,KAAK,UAAUzC,IAAIgZ,EAAMzW,IAAI,UAGtCf,EAAE,+BAA+BmI,SAASoP,IAG9CG,aAAc,SAASC,GACnB1X,KAAK8D,MAAMV,UAAUrD,EAAE2X,EAAaC,QAAQpZ,UAOhDqZ,EAAoBlN,SAASC,KAAKjM,QAElCkM,WAAY,WACR5K,KAAK8D,MAAMP,GAAG,gBAAiBvD,KAAK6X,YAAa7X,OAMrD0L,OAAQ,WACJ,GAAIqH,GAAO/S,IACP8X,MAAO9X,KAAK8D,MACZwE,WAAatI,KAAK+D,IAAIzC,SAAS,gBAAgB6C,OAGnDmE,WAAWlJ,KAAK,OAAQ,SAASG,GAC7BA,EAAEyO,oBACHxB,MAAM,SAASjN,GACdA,EAAEyO,oBACH5O,KAAK,WAAY,SAASG,GACzBA,EAAEyO,oBACH+J,QAAQ,SAASxY,GAAKA,EAAEyO,mBAGZjO,GAAE,2BAA2BmI,SAASI,YAAYiE,KAAKuL,KAAKhX,IAAI,QAC/EgX,MAAKhX,IAAI,UAAU0J,KAAK,SAAS+M,GAE7B,GAAIS,GAAa,GAAIb,IAAoBrT,MAAOyT,GAChDS,GAAWtM,SACXpD,WAAWpH,OAAO8W,EAAWjU,OAIjCuE,WAAWtH,KAAK,SAASwL,MAAM,WAAazM,EAAEC,MAAMuO,UAGpD,IAAI0J,GAAelY,EAAE,SAASuB,SAAS,aAAa4G,SAASI,YACzD4P,EAAwBnY,EAAE,yBAAyBhB,KAAK,QAAS,2BAA2BmJ,SAAS+P,GACrGE,EAAuBpY,EAAE,yBAAyBhB,KAAK,QAAS,yBAAyBmJ,SAAS+P,EACtGE,GAAqB3L,MAAO,WAExBuG,EAAKqF,kBAETF,EAAsB1L,MAAO,WACzBuG,EAAKsF,mBAGLP,KAAKZ,cACLlX,KAAK+D,IAAIG,QAOjB2T,YAAa,WACT7X,KAAK+D,IAAIkF,OAAOjJ,KAAK8D,MAAMoT,eAM/BoB,cAAe,WACX,IAAK,GAAIzY,GAAI,EAAGA,EAAIG,KAAKuY,OAAOnY,OAAQP,IACpCG,KAAKuY,OAAO1Y,GAAG4X,gBAOvBY,eAAgB,WACZ,GAAIP,GAAO9X,KAAK8D,KAChB9D,MAAKwY,KAGGC,kBAAmBzY,KAAK8D,MAAMhD,IAAI,SAASyV,QAAQ7T,GACnDgW,OAAQ,QACRC,QAASb,EAAKpV,IAElB,KAEA,WACIgK,OAAOkM,MAAM1U,MAAMI,MAAOwT,EAAKhX,IAAI,QAAU,cAAe+X,KAAMf,EAAKhX,IAAI,QAAU,8EAA+EgY,SAAWC,MAAU,WAAarM,OAAOkM,MAAMzU,cAS/NiU,cAAe,WAIX,GAoBI1Y,GApBAmN,EAAQ7M,KAAK8D,MAAMhD,IAAI,SACvBgX,EAAO9X,KAAK8D,MACZkV,EAAS,GAAIrb,GAAcsb,cACvBpO,MAAOgC,EAAMtK,KAAKsI,MAClBqO,MAAOrM,EAAMtK,KAAK6L,IAClB+K,IAAKtM,EAAMtK,KAAK8L,OAEpB+K,GAEIX,kBAAmB5L,EAAM0J,QAAQ7T,GACjCgW,OAAQ,QACRC,QAASb,EAAKpV,GACd2W,SACIL,EAAOM,WAGfC,EAAgB1M,EAEhB2M,EAAa1B,EAAKhX,IAAI,QACTyY,EAAcE,+BAA+BT,EAK9D,IAAIO,EAAc7Z,YAAc6C,KAAM,CAElC,GAAIqG,GAAQ,GAAIZ,GAAczF,KAAMA,MAAQc,KAAMwJ,EAAM/J,OAAOK,UAAU,UAGrE6D,EAAQuS,EAAc7Z,UAAUyH,iBAAiBoS,EAAe3Q,GAAO,EAK3EA,GAAMpF,cAAc/C,aAAa8Y,EAAchX,KAAK0F,YAAYhI,WAAW+G,IAC3E4B,EAAM/H,aAAa0Y,GACnBA,EAAc/V,cAAc0E,SAASU,EAAMX,aAC3CvI,EAAYkJ,MAIZlJ,GAAY6Z,EAAc7Z,SAI9B,IAAIga,GAAY,GAAIH,GAAcI,YAAYpX,KAAM7C,GAChD2D,KAAMmW,EACNI,SAAU,OAEdF,GAAUG,qBACVH,EAAUI,YAAYP,EAAcQ,MACpCL,EAAUM,oBAAoBT,EAAcpR,gBAAgBqO,KAAKkD,IACjEA,EAAUxT,eACVxG,EAAUmB,aAAa6Y,GACvBA,EAAUxQ,UAAUqD,KAAK,iBAGzBvM,KAAKwY,IAAIY,EAAYM,EAEb,SAASO,GACLP,EAAUQ,YAAY,GAAIjc,GAAKkc,QAAQF,IACvCP,EAAUxQ,UAAUqD,KAAK,gBACzBmN,EAAUpU,UAQ1BkT,IAAK,SAASY,EAAYM,EAAWU,GAEjChB,EAAWiB,OAASra,KAAK8D,MAAMmT,iBAC/B,IAAIqD,GAAc,GAAIzc,GAAK0c,qBACvBC,eACInH,IAAK3G,OAAOC,KAAO,YACnB1O,KAAMwc,KAAKC,UAAUtB,GACrB9F,SAAU,OACVqH,YAAa,mBACbxV,KAAM,QAEVyV,SAAU,IACVC,WAAY,SAASjM,GACjB,MAAoB,YAAbA,IAQf7O,GAAEuP,KAAKgL,EAAYQ,MAAMvG,KAAK,SAAS3F,GAClB,iBAAbA,GAEA8K,EAAUlW,cAAclC,SAAS,SACjCoY,EAAUzR,YAAYsE,KAAKxK,IAEtB6M,EAASyF,OAEdqF,EAAUlW,cAAclC,SAAS,SACjCoY,EAAUzR,YAAYsE,KAAKrK,EAAuB0M,EAASmM,UAI3DX,EAAiBxL,QAU7BoM,EAAe,SAASjR,EAAQkR,GAChCld,EAASmd,OAAO7U,KAAKrG,KAAMib,GAC3Bjb,KAAK+J,OAASA,EAGlBiR,GAAa5W,UAAU+W,QAAU,SAASC,GAEtC,MAAIpb,MAAK+J,OAAOsE,OAASgN,OAAOC,WAAatb,KAAK+J,OAAOqE,OAASiN,OAAOC,WAAatb,KAAK+J,OAAOqE,MAAQpO,KAAK+J,OAAOsE,KAC3GrO,KAAKib,aAILM,WAAWH,EAAapb,KAAK+J,OAAO/C,QAAUhH,KAAK+J,OAAOqE,MAAUpO,KAAK+J,OAAOsE,KAAOrO,KAAK+J,OAAOqE,KAMlH,IAAIoN,GAAO,SAAS3O,EAAOmM,EAAQyC,EAASC,EAAQzd,GAChD+B,KAAK6M,MAAQA,EACb7M,KAAKgZ,OAASA,EACdhZ,KAAKoO,IAAM4K,EAAOlY,IAAI,SACtBd,KAAKqO,KAAO2K,EAAOlY,IAAI,OACvBd,KAAKyb,QAAUA,EACfzb,KAAK0b,OAASA,EAEd1b,KAAK2b,SAAW5b,EAAE,6BAA6BmB,OAAOwa,GACtD1b,KAAK/B,KAAOA,EACZ+B,KAAK4b,OAAQ,EAMjBJ,GAAKpX,UAAUyX,mBAAqB,YAEpC,IAAIC,GAAgB,SAASjP,EAAOmM,EAAQyC,EAASC,EAAQzd,GACzDud,EAAKnV,KAAKrG,KAAM6M,EAAOmM,EAAQyC,EAASC,EAAQzd,GAEpD6d,GAAc1X,UAAUyX,mBAAqB,YAE7C,IAAIE,GAAmB,SAASlP,EAAOmM,EAAQyC,EAASC,EAAQzd,EAAM8b,EAAMgB,EAASiB,EACrDC,EAAgBC,EAAqBC,GAEjEX,EAAKnV,KAAKrG,KAAM6M,EAAOmM,EAAQyC,EAASC,EAAQzd,GAChD+B,KAAK+Z,KAAOA,EACZ/Z,KAAKgc,YAAcA,EACnBhc,KAAKic,eAAiBA,EACtBjc,KAAKoc,WAAY,EACjBpc,KAAKkc,oBAAsBA,EAE3Blc,KAAKqc,8BACLrc,KAAKmc,SAAWA,EAuDpBzd,GAAOqd,EAAiB3X,UAAWoX,EAAKpX,WAKxC2X,EAAiB3X,UAAUyX,mBAAqB,YAiHhD,IAAIS,GAAQ,SAAS/Z,EAAM7C,EAAW8C,GAElC9D,EAAO8D,GACHG,kBAAmB,eAEvBL,EAAS+D,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAOrCxC,KAAKuW,QAAU,KACX/T,EAAS+T,UAETvW,KAAKuW,QAAW/T,EAAS+T,kBAAmB7L,UAAS6R,MAAQ/Z,EAAS+T,QAAU,GAAItY,GAAKkc,QAAQ3X,EAAS+T,UAE9GvW,KAAKwc,mBAAqB,2BAC1Bxc,KAAKyc,yBACLzc,KAAK0c,gBAAmB,mBAAqBla,GAAWA,EAASka,gBAAkB9a,EAEnF5B,KAAKiP,aAAgB,gBAAkBzM,GAClBA,EAASyM,aACT,GAAItR,GAAcgf,mBACdpG,QAASvW,KAAKuW,QAGdqG,OAAQ,GAAIjf,GAAckf,QACvB5X,IAAK1C,EAAKwI,MACV+R,aACItJ,WAAYjR,EAAK2Q,cAGxB6J,qBAAsB/c,KAAKgd,yBAC3BC,WAAYjd,KAAKid,aAI1Cjd,KAAKkd,cAAgB,GACrBld,KAAKmd,cAAgB,IACrBnd,KAAKod,kBAAoBpd,KAAK8C,OAAOK,UAAU,UAK/CnD,KAAKiI,YAAclI,EAAE,+BAA+BmI,SAASlI,KAAKwD,eAC9DxD,KAAKN,YACLM,KAAKN,UAAUuI,YAAY/G,OAAOlB,KAAKwD,eAChC,UAAYhB,KAAaA,EAAS6a,QACrCrd,KAAKsd,qBAKjB5e,GAAO4d,EAAMlY,UAAW9B,EAAS8B,WAC7BC,mBAGQhB,KAAM,YACNiB,MAAO,mBACPC,UAAW,iBACXC,YAAa,cAGjBlC,EAAS8B,UAAUC,iBAAiB,IAGhChB,KAAM,gBACNiB,MAAO,kBACPC,UAAW,uBACXC,YAAa,SAASqI,GAClBA,EAAMtK,KAAK8T,aAAaxJ,KAIhCvK,EAAS8B,UAAUC,iBAAiB,IAGhChB,KAAM,eACNiB,MAAO,UACPC,UAAW,gBACXC,YAAa,SAASC,GAEdA,EAAS0D,gBAAgBO,UACzBjE,EAAS0D,gBAAgBW,gBAGzBrE,EAAS0D,gBAAgBmC,eAE7B7F,EAAS0D,gBAAgBc,YAK7B5F,KAAM,aACNiB,MAAO,OACPC,UAAW,SACXC,YAAa,SAASqI,GAGlBA,EAAMiL,KAAK7O,SAGP4D,EAAMiL,KAAKZ,aACXrK,EAAMhH,SAASgH,EAAM/J,OAAOK,UAAU,QAAU0J,EAAM4M,kCAGtD5M,EAAM7G,cAGVjG,EAAE,YAAYiF,YAKlB3B,KAAM,uBACNiB,MAAO,qCACPC,UAAW,cACXC,YAAa,SAASqI,GAClB,GAAIoH,GACA,yBAA2BpH,EAAMiL,KAAKhX,IAAI,QAAU,iCACtB+L,EAAM/J,OAAOK,UAAU,QAAU,iOAM/Doa,EAAY,WAAa7Q,OAAOkM,MAAMzU,OAAQpE,EAAEgS,QAAQyL,OAAO,6BAC/DC,EAAQ,WACJ,GACIpE,GADAqE,EAAiB3d,EAAE,0CAA0CxB,MAE7Dof,EAAc,GAAIhgB,GAAcsb,cAC5BpO,MAAOtI,KAAKsI,MACZqO,MAAO3W,KAAK6L,IACZ+K,IAAK5W,KAAK8L,OAEduP,EAAqBlgB,EAAEqR,IAAIhP,EAAE,aAAc,SAAS8d,GAChD,MAAO,IAAIlgB,GAAcsb,cAAc6E,SAAU/d,EAAE8d,GAAK5d,SAAS,aAAasM,UAMlF8M,GAFmB,QAAnBqE,GAEYC,GAEY,cAAnBD,EAEKE,GAIED,GAAc5V,OAAO6V,GAGrClR,OAAOkM,MAAMzU,OAGb4N,OAAOgM,SAASC,KACZtR,OAAOC,KAAO,2BACd5M,EAAEwX,OACE0G,WAAYpR,EAAM0J,QAAQ7T,GAC1BkX,SAAU/M,EAAM0J,QAAQzV,IAAI,YAC5BuY,QAASoB,KAAKC,UAAU,GAAIhQ,UAASwT,WAAW7E,GAASC,YAYzE5M,QAAOkM,MAAM1U,MAAMI,MAAO,+EAAgFuU,KAAM5E,EAAM6E,SAAWqF,GAAOZ,EAAWa,IAAQX,OAInKnb,EAAS8B,UAAUC,iBAAiB,IAGxCmB,SAAU,WACN,MAAOxF,MAAKuW,SAAWjU,EAAS8B,UAAUoB,SAASa,KAAKrG,OAG5DyD,oBAAqB,WACjB,MAAO1D,GAAE,UAAUuB,SAAS,SAASvC,KAAK,KAAM,SAAWiB,KAAK0C,KAMpEwX,YAAa,SAAS3D,GAClBvW,KAAKuW,QAAUA,EACfvW,KAAKiP,aAAa6H,IAAI,UAAWP,IAMrC8H,UAAW,WACPre,KAAK0F,cAAesD,kBAAkB,KAM1CsU,kBAAmB,WACf,GAAIzQ,GAAQ7M,KACRse,GAAY,EACZC,GAAU,EACVC,EAAeze,EAAG,6BAEtBA,GAAE8M,EAAMrJ,eAAeS,MAAO,WACrB4I,EAAM/J,OAAOK,UAAU,qBACxBmb,GAAY,EACZE,EAAata,SAElB,WACCoa,GAAY,EACLC,GAAYC,EAAara,SAIpCqa,EAAara,OAAO/E,KAAM,YAAa,SAAUG,EAAGC,GAChD+e,GAAU,EACV/e,EAAEif,gBAAkB1e,EAAE8M,EAAM5E,aAAauF,WAC1CpO,KAAM,OAAQ,SAAUG,EAAGC,GAC1B,GAAIkf,GAAalgB,KAAK4S,IAAK5S,KAAKgT,IAAKhS,EAAEif,gBAAkBjf,EAAE6B,OAAQwL,EAAMqQ,eAAiBrQ,EAAMsQ,cAChGpd,GAAE8M,EAAM3D,WAAWoF,IAAK,SAAUoQ,GAClC7R,EAAMuQ,kBAAqBvQ,EAAMsQ,gBAAkBuB,EAAa,EAAIA,EACpE7R,EAAMwR,cACPjf,KAAM,UAAW,WAChByN,EAAM8R,WAAWC,QACjBL,GAAU,EACLD,GAAaE,EAAara,OAC/B0I,EAAM/J,OAAOM,UAAU,SAAUyJ,EAAMuQ,mBACvCvQ,EAAMtH,YACP2C,SAAS2E,EAAMrJ,gBAOtBmB,cAAe,WAEX3E,KAAKkJ,UAAU/E,OAEfnE,KAAKwD,cAAcxC,KAAK,8BAA8BmD,QAG1DS,cAAe,WAEX5E,KAAKkJ,UAAUhF,OACflE,KAAKwD,cAAcxC,KAAK,8BAA8BkD,OAEtDlE,KAAK0F,gBAMTgE,SAAU,WAEN,MAAI1J,gBAAgB8R,GACT,aAEF9R,eAAgB2T,GACd,iBAEF3T,eAAgB8J,GACd,YAEF9J,eAAgB6e,GACd,YAEF7e,eAAgB8e,GACd,eAEF9e,eAAgBsJ,GACd,iBAEFtJ,eAAgB6J,GACd,eAEJ,IAMXkV,aAAc,SAASC,GAEnB,MADAhf,MAAKkJ,UAAUlE,SACRjF,EAAE,WAAWuB,SAAS,WAAW2S,KAAK+K,GAAU9W,SAASlI,KAAKiI;;EAMzE3C,KAAM,SAAS2Z,GAIX,GAAIpS,GAAQ7M,IAmBZ,IAlBA6M,EAAMpH,SAAU,EAChBoH,EAAM8R,WAAWC,QACjB/R,EAAMoC,aAAa2P,QAOnB/R,EAAM5E,YAAYhI,WAAW+E,SAC7B6H,EAAMrJ,cAAcjC,YAAY,wBAEhCsL,EAAM3D,UAAYnJ,EAAE,UAAUuB,SAAS,SAAS4G,SAAS2E,EAAM5E,aAM1D4E,EAAM0J,QAAQ7T,GAAnB,CAMA,GAAIwc,GAAgBnf,EAAEoT,WAClBoF,GACIqB,SAAU/M,EAAM0J,QAAQzV,IAAI,YAC5Bqe,UAAWnf,KAAKwc,mBAChB3R,MAAOgC,EAAMtK,KAAKsI,MAClBoU,MAAOA,EA4Df,OA1DAlf,GAAEqf,QAAQpf,KAAKuW,QAAQlD,MAAOkF,EAAQ,SAAUhF,GAC5C,GAAKA,GAAqB,UAAXA,GAAsC,UAAhBA,EAAO8L,KAmBxB,iBAAX9L,GACL1G,EAAMrJ,cAAclC,SAAS,SAC7BuL,EAAMkS,aAAahd,IAEH,YAAXwR,GAAyCtI,SAAhBsI,EAAOtV,OAAuC,OAAhBsV,EAAOtV,MAAwC,IAAvBsV,EAAOtV,KAAKmC,SAChGyM,EAAMrJ,cAAclC,SAAS,UAC7BuL,EAAMkS,aAAa/c,IAEH,YAAXuR,GACL1G,EAAMrJ,cAAclC,SAAS,WAC7BuL,EAAMkS,aAAa9c,GAEnBiQ,WAAW,WAAarF,EAAMvH,QAAWuH,EAAM6P,mBAE/B,SAAXnJ,GAAuC,SAAlBA,EAAO+L,UAC7B/L,EAAOgM,eACP1S,EAAM0S,aAAehM,EAAOgM,aAC5B1S,EAAM3G,gBAEV2G,EAAM3D,UAAUqD,KAAKpK,GACjB0K,EAAMtK,KAAKsI,OACXgC,EAAM3D,UAAUqD,KAAK,IACrBM,EAAM3D,UAAUoF,IAAK,SAAUzB,EAAMuQ,kBAAoB,MACzDvQ,EAAMpH,SAAU,EAEhB1F,EAAEuP,KAAKC,MAAMxP,EAAG8M,EAAM2S,gBAAgBhQ,KAAK,WACvC0P,EAAc9K,UACdvH,EAAMrJ,cAAcjC,YAAY,wBAChCsL,EAAMnH,kBAIVwZ,EAAc9K,eAnDwC,CAE1DvH,EAAMrJ,cAAclC,SAAS,QAC7B,IAAIme,GAAU5S,EAAMkS,aAAajd,EAC7ByR,GAAOwH,UAEP0E,EAAQve,OACJnB,EAAE,sCAAsCwM,KAAK,cAAcC,MAAM,WAC7DE,OAAOkM,MAAM1U,MAAMI,MAAO,kBAAmBuU,KAAM,QAAUtF,EAAOwH,QAAU,SAAUjC,SAAWC,MAAU,WAAarM,OAAOkM,MAAMzU,cAG/Isb,EAAQve,OAAQnB,EAAE,WAAWwM,KAAK,MAClCkT,EAAQve,OACJnB,EAAE,sCAAsCwM,KAAK,aAAaC,MAAM,WAC5DK,EAAMvH,MAAK,UA0C/BtF,KAAKkG,eACEgZ,IAMXM,aAAc,WACV,GAAI3S,GAAQ7M,IACZ,OAAOD,GAAEqf,QAASvS,EAAM0J,QAAQlD,OACzB8L,UAAW,OAAQO,OAAO,EAAM7U,MAAOgC,EAAMtK,KAAKsI,MAAOuD,IAAK,EAC9DC,KAAMxB,EAAMtK,KAAK8I,SAAUuO,SAAU/M,EAAM0J,QAAQzV,IAAI,aAAe,SAASyS,GAClF,GAAItV,GAAOsV,EAAOtV,IAGlB,IAAIA,GAAqBgN,SAAbhN,EAAKmT,KAAkCnG,SAAbhN,EAAKuT,IAAmB,CAE1D,GAAImO,GAAY1hB,EAAKmT,IACjBwO,EAAY3hB,EAAKuT,GAGrBmO,GAAYnhB,KAAKmX,MAAOnX,KAAK4S,IAAK,EAAG5S,KAAKgT,IAAKmO,EAAW1hB,EAAK4hB,KAAO,EAAI5hB,EAAK6hB,MAC/EF,EAAYphB,KAAKoX,KAAMpX,KAAKgT,IAAK,EAAGhT,KAAK4S,IAAKwO,EAAW3hB,EAAK4hB,KAAO,EAAI5hB,EAAK6hB,MAE9EjT,EAAM/J,OAAOid,kBAAkB,YAAaJ,GAC5C9S,EAAM/J,OAAOid,kBAAkB,YAAaH,GAC5C/S,EAAM/J,OAAOM,UAAU,YAAauc,GACpC9S,EAAM/J,OAAOM,UAAU,YAAawc,OAQhDzZ,cAAe,WACX,MAAOnG,QAIf,IAAIggB,GAAa,SAASzd,EAAM7C,EAAW8C,GACvC8Z,EAAMjW,KAAKrG,KAAMuC,EAAM7C,EAAW8C,EAElC,IAAIqK,GAAQ7M,IAmBZ,IAhBAhB,EAAS6N,EAAMrJ,cAAeqJ,EAAMlK,kBAAmB,SAAUkK,GAGjE7M,KAAKmI,gBAAkB,GAAInK,GAAYoK,eAAepI,KAAO,WAAawC,GAAWA,EAASiG,QAAU,MAGxGzI,KAAKiP,aAAa6H,IAAI,kBAAmB9W,KAAKmI,iBAC9CnI,KAAKigB,mBAAoB,EACzBjgB,KAAK8X,KAAQtV,EAASsV,KAAO,GAAIpB,GAAehZ,EAAEgB,OAAQ8D,EAASsV,MAC/DjL,MAAS7M,KACT6W,WAAcrU,EAASqU,cAEzB,KACF7W,KAAK2e,WAAa,GAAIhhB,GAAcuiB,MAAM9d,GAC1CpC,KAAKmgB,YAAc,EAEfngB,KAAK0D,aAIL1D,KAAKga,oBAAoBha,KAAKmI,iBAK1BnI,KAAK8X,MAAM,CACX,GAAIsI,GAAY,GAAIxI,IAAoB9T,MAAO9D,KAAK8X,MACpDsI,GAAU1U,SACV1L,KAAKqgB,iBAAmBD,EAAUrc,IAClC/D,KAAK0D,WAAW2E,MAAMrI,KAAKqgB,kBAKnCrgB,KAAKkJ,UAAYnJ,EAAE,UAAUuB,SAAS,SAAS4G,SAASlI,KAAKiI,aACxDjI,KAAK8C,OAAOK,UAAU,oBACvBnD,KAAKkJ,UAAU/E,OAEnBnE,KAAKsgB,YAAcvgB,EAAE,UAAUuB,SAAS,WAAW4G,SAASlI,KAAKiI,aAE7DzF,EAASuX,MACT/Z,KAAK8Z,YAAYtX,EAASuX,MAGlCrb,GAAOshB,EAAW5b,UAAW9B,EAAS8B,UAAWkY,EAAMlY,WAEnDC,iBAAkBiY,EAAMlY,UAAUC,iBAAiB0D,SAG3C1E,KAAM,sBACNiB,MAAO,4FACPC,UAAW,cACXC,YAAa,SAASqI,GAClB9M,EAAE,YAAYiF,SACd6H,EAAM0T,SAAU1T,EAAMtK,KAAKsT,iBAAkB2K,UAAY,EACzD3T,EAAMnH,cAAesD,kBAAkB,KAE3C7E,MAAM,KAOdqS,KAAM,SAAS9W,GAEX,GAAI8C,GAAWxC,KAAK4F,SACpBlH,GAAO8D,GACHyM,aAAcjP,KAAKiP,cAEvB,IAAIyK,GAAY,GAAI1Z,MAAK2Z,YAAY3Z,KAAKuC,KAAM7C,EAAW8C,EAI3D,OAFAkX,GAAUI,YAAY9Z,KAAK+Z,MAC3BL,EAAUjU,QAAUzF,KAAKyF,QAClBiU,GAMXM,oBAAqB,SAAS7R,GAC1BnI,KAAKmI,gBAAkBA,EACvBnI,KAAK0D,WAAW2E,MAAMrI,KAAKmI,gBAAgBG,aAO/C1C,QAAS,WACL,OACI8B,WAAY1H,KAAK0J,WACjB6M,SACI7T,GAAI1C,KAAKuW,QAAQ7T,GACjBkX,SAAU5Z,KAAKuW,QAAQzV,IAAI,aAE/BoC,MAAOlD,KAAK8C,OAAOgE,oBACnBiT,KAAM/Z,KAAK+Z,KACXtR,QAASzI,KAAKmI,gBAAgBvC,UAC9BiR,WAAa7W,KAAK8X,KAAO9X,KAAK8X,KAAKd,kBAO3CyJ,YAAa,WACT,GAAI5T,GAAQ7M,IAEZ,OAAOD,GAAEqf,QAASvS,EAAM0J,QAAQlD,OAC1B8L,UAAW,OAAQO,OAAO,EAAM7U,MAAOgC,EAAMtK,KAAKsI,MAAOuD,IAAK,EAC9DC,KAAMxB,EAAMtK,KAAK8I,SAAUuO,SAAU/M,EAAM0J,QAAQzV,IAAI,aACzD,SAASyS,GACL,GAAItV,GAAOsV,EAAOtV,IAClB,IAAKyiB,MAAMnF,WAAW1O,EAAM/J,OAAOK,UAAU,gBACxCud,MAAMnF,WAAW1O,EAAM/J,OAAOK,UAAU,eAAiB,CAE1D,GAAIwc,GAAY1hB,EAAKmT,IACjBwO,EAAY3hB,EAAKuT,GAGrBmO,GAAYnhB,KAAKmX,MAAOnX,KAAK4S,IAAK,EAAG5S,KAAKgT,IAAKmO,EAAW1hB,EAAK4hB,KAAO,EAAI5hB,EAAK6hB,MAC/EF,EAAYphB,KAAKoX,KAAMpX,KAAKgT,IAAK,EAAGhT,KAAK4S,IAAKwO,EAAW3hB,EAAK4hB,KAAO,EAAI5hB,EAAK6hB,MAE9EjT,EAAM/J,OAAOM,UAAU,YAAauc,GACpC9S,EAAM/J,OAAOM,UAAU,YAAawc,OAQpD9F,YAAa,SAAS6G,GAClB,GAAI9T,GAAQ7M,IAUZ,OARA6M,GAAMkN,KAAO4G,EACb9T,EAAM/J,OAAOM,UAAU,OAAQud,GAId,SAAbA,GAAuB3gB,KAAKiP,aAAa2P,QAC7C/R,EAAMnH,cAAesD,kBAAkB,IACvChJ,KAAK6C,aAAa+d,UAAU7hB,KAAK,QAAS,0BAA4B8N,EAAMkN,KAAO,KAC5ElN,GAMX3G,aAAc,WACV,GAAI2G,GAAQ7M,IAKZ6M,GAAMhK,aAAawG,aAAaJ,OAAO4D,EAAMoT,mBAK7CpT,EAAMhK,aAAage,WAAW5X,OAAsB,OAAf4D,EAAMiL,MAC3CjL,EAAMhK,aAAaie,qBAAqB7X,OAAsB,OAAf4D,EAAMiL,OAOzDiJ,oBAAqB,SAAStF,EAASuF,GACnC,MAAOvF,GAAU,IAAMuF,GAM3Btb,aAAc,SAASiB,GACfA,GAAWA,EAAQqC,kBACnBhJ,KAAK2e,WAAWC,QAEpB5e,KAAKuC,KAAKqP,eAAejL,EAAS3G,OAMtCihB,YAAa,WAETjhB,KAAKmd,cAAgB,GAYzBxX,MAAO,SAASgB,GACZ,GAAM3G,KAAKwF,WAAX,CAEA,GAAI0b,GAAcva,GAAWA,EAAQua,YACjC9S,EAAMpO,KAAKuC,KAAK6L,IAChBC,EAAOrO,KAAKuC,KAAK8L,KAEjBoC,EAAQzQ,KAAKuC,KAAK7C,UAAU+Q,QAC5BgL,EAAUzb,KAAKuC,KAAKsT,gBACpBsL,EAAa,EAAI1F,CAGjBzb,MAAK4C,cACLwL,EAAMpO,KAAKuC,KAAK6I,QAChBiD,EAAOrO,KAAKuC,KAAK8I,SACjBoQ,EAAUhL,GAASlO,KAAK8I,SAAW9I,KAAK6I,SACxC+V,EAAa,EAAI1F,GAGrBzb,KAAKihB,cAYLjhB,KAAKkJ,UAAUjJ,WAAWqB,SAAS,SAYnC,KAVA,GAKI0f,GACAI,EAJAC,EAAa7iB,KAAKmX,MAAMhU,EAAYwf,GAEpCG,EAAa9iB,KAAKmX,MAAMvH,EAAMiT,GAG9BE,KACAC,KAEgCnT,EAA3BiT,EAAaD,GAElBL,EAAc,GAAIrjB,GAAcsb,cAC5BpO,MAAO7K,KAAKuC,KAAKsI,MACjBqO,MAAOoI,EAAaD,EAEpBlI,IAAK3a,KAAK4S,KAAMkQ,EAAa,GAAKD,EAAYrhB,KAAKuC,KAAK8I,YAE5D+V,EAAephB,KAAKyhB,YAAYT,EAAavF,EAAS9U,GACtD4a,EAAc1a,KAAKua,GACnBrhB,EAAEuP,KAAK8R,GAAc7M,KAAK,SAASmN,GAC/BF,EAAM3a,KAAK6a,KAIfJ,GAAc,CAIbJ,IAAelhB,KAAKkJ,UAAUjJ,SAAS,WAAWsB,YAAY,UAAUyD,QAG7E,IAAI6H,GAAQ7M,IACZD,GAAEuP,KAAKC,MAAMxP,EAAGwhB,GAAehN,KAAK,WAEhC1H,EAAM3D,UAAUjJ,SAAS,WAAW+E,SAKpCwc,EAAQ9jB,EAAEqM,OAAOyX,EAAO,SAASxS,GAC7B,MAAa,QAANA,IAEU,IAAjBwS,EAAMphB,QACNyM,EAAM4J,iBAAiB+K,EAAO/Q,EAAOgL,EAASyF,OAQ1DS,iBAAkB,SAASxc,EAAMyc,GAC7B,GAAI/U,GAAQ7M,KACRuE,EAAsB,QAATY,EAAiB,MAAQ,SACtCoH,EAAiB,QAATpH,EAAiB,MAAQ,MACjC0c,EAAsB,QAAT1c,EAAiB,YAAc,YAC5CD,EAAQlF,KAAKwD,cAAcxC,KAAK,eAAiBuD,GACjDmL,EAAQtR,EAAOyO,EAAM/J,OAAOK,UAAU0e,GAAY,EAGtDD,GAAYA,GAAa,WACrB/U,EAAMnH,cAAesD,kBAAkB,KAGtB,IAAjB9D,EAAM9E,OAEN8E,EAAMqH,KAAKmD,IAIXxK,EAAQnF,EAAE,UAAUwM,KAAKmD,GAAOoS,oBAC5BC,SAAU,GACVC,UAAW,SAASC,GAChBliB,EAAE,YAAYiF,SACd6H,EAAM/J,OAAOM,UAAUye,EAAWzjB,EAAO6jB,EAAS,IAClDL,KAEJM,UAAW,OAAS3V,EAAO,WAC5BjL,SAAS,cAAgBiD,GAAW+J,IAAI,QAAStO,KAAK8C,OAAOK,UAAU,gBAC1EnD,KAAKwD,cAAcvC,QAAQiE,KAQnCuR,iBAAkB,SAAS+K,EAAO/Q,EAAOgL,GACrC,GAAI0G,GAAmBzkB,EAAEqM,OAAOyX,EAAO,SAASE,GAC5C,MAAQA,aAAgB5F,IAO5B,IAAIqG,EAAiB/hB,OAAS,EAAG,CAI7BJ,KAAKmd,cAAgB,CACrB,IAAItQ,GAAQ7M,IACZtC,GAAE8M,KAAKgX,EAAO,SAASE,GACbA,YAAgB5F,KAClB4F,EAAK/F,SAAS3W,SACd6H,EAAM4U,YAAYC,EAAK1I,OAAQyC,GAAW2G,OAAO,EAAMrI,KAAM,gBAIrElN,EAAM8U,iBAAiB,WAEtB,CAID3hB,KAAKwD,cAAcxC,KAAK,eAAegE,QAKvC,IAAIqd,GAAgB3kB,EAAEsD,KAAKwgB,EAAO,SAASE,GACvC,MAAOA,GAAKtF,WAGZiG,IACA3kB,EAAE8M,KAAKgX,EAAO,SAASE,GACdA,EAAKtF,WAENsF,EAAK/F,SAASrN,IAAI,cAAe9M,OAUrD8gB,SAAU,WACN,MAAOtiB,MAAK+Z,MAMhBwI,iBAAkB,aAOlBC,eAAgB,WACZ,OAASxiB,OASbyhB,YAAa,SAASzI,EAAQyC,EAAS9U,GAE9BA,IAAWA,KAEhB,IAAIyb,GAAQzb,EAAQyb,MAChBrI,EAAOpT,EAAQoT,MAAQ/Z,KAAK+Z,KAC5BoH,EAAa,EAAI1F,EAGjB5O,EAAQ7M,KACRuG,EAAYvG,KAAKwiB,iBACjBvd,EAAMjF,KAAK+gB,oBAAoBtF,EAASzC,GACxCyJ,EAAU,SAASC,GAAK,MAAQA,IAAK,SAAWA,IAGhDhB,EAAQU,EAAQnX,OAAY4B,EAAM8R,WAAWgE,QAAQ1d,EACzD,IAAIyc,EAIA,MAHIe,GAAQf,IACR7U,EAAM+V,UAAUlB,EAAMjG,GAEnBiG,CAIX,IAAI/a,EAAQwO,cAAe,EAAS,MAAO,KAG3C,IAAI0N,GAAgB,WAEhB,GAAIC,GAAaplB,EAAEsD,KAAKqB,EAAuB,SAAS0gB,GAAK,MAAOA,KAAMhJ,IAAW,WAAaA,EAG9FiJ,EAAYtlB,EAAEqR,IAAIxI,EAAW,SAAS/G,GAEtC,MAAOA,GAAEyP,aAAagU,SAASjK,EAAQ8J,EAAW3B,EAAYtU,EAAM4P,wBAQxE,OAJIla,MAAKqR,iBACLoP,EAAUnc,KAAKtE,KAAKqR,gBAAgB3E,aAAagU,SAASjK,EAAQe,EAAMoH,EAAY5e,KAAKqR,gBAAgB6I,wBAGtGuG,GAMPE,EAAanjB,EAAEoT,UAwEnB,OAvEAtG,GAAM8R,WAAWwE,QAAQle,EAAKie,GAC9BnjB,EAAEuP,KAAKC,MAAMxP,EAAG8iB,KAAiBtO,KAAM,WACnC,GAEI4H,GAFA6G,EAAYH,IACZO,EAAcJ,CAOlB,IAAItlB,EAAEsD,KAAKgiB,EAAW,SAASxjB,GAAK,MAAO3B,GAAKwlB,YAAY7jB,KAKxD,MAJAqN,GAAM8R,WAAWwE,QAAQle,EAAKgG,YAC9BlL,GAAEuP,KAAKzC,EAAM4U,YAAYzI,EAAQyC,EAAS9U,IAAU4N,KAAK,SAASmN,GAC9DwB,EAAW9O,QAAQsN,IAMvBnf,MAAKqR,kBACLuI,EAAW5Z,KAAKqR,gBAAgB3E,aAAaqU,aAAaN,EAAUO,MAAOvK,GAI/E,IAAIwK,MACAC,IAEJ/lB,GAAE8M,KAAKjE,EAAW,SAAS/G,EAAGK,GAC1B,GAAIka,GAAOva,EAAEua,KACT9b,EAAOmlB,EAAYvjB,EACV,UAATka,IACAA,EAAOva,EAAE8iB,SAASrkB,GAClBuB,EAAE+iB,iBAAiBxI,IAEvByJ,EAAc3c,KAAKkT,GACnB0J,EAAgB5c,KAAKrH,EAAEkkB,kBAAkBzlB,EAAM8b,EAAM0B,EAAShL,KAGlE,IAMIiR,GANAhG,EAAS7O,EAAMtK,KAAKoJ,eAAegY,aACnCC,EAAW5K,EAAOlY,IAAI,SACtB+iB,EAAY7K,EAAOlY,IAAI,OAEvB2P,EAAQjS,KAAKoX,MAAOiO,EAAYD,GAAYnI,GAAY5O,EAAMsT,YAC9D3S,EAAS9P,EAAE8T,IAAIiS,EAMnB/H,GAAOjL,MAAQA,EAEfiL,EAAOlO,OAAU7G,EAAQ6G,QAAUA,CACnC,IAAIsW,GAAMpI,EAAOqI,WAAW,KAC5BD,GAAIE,UAAUnX,EAAMsT,YAAa,GAC7B5Z,EAAUnG,OAAS,IACnB0jB,EAAIG,YAAc,GAClBH,EAAII,yBAA2B,eAEnCxmB,EAAE8M,KAAKjE,EAAW,SAAS/G,EAAGK,GAC1B6hB,EAAOliB,EAAE2kB,UAAUf,EAAYvjB,GAAIikB,EAAKN,EAAc3jB,GAAImZ,EAAQyC,EAASU,KAIlElR,SAATyW,IACA7U,EAAM8R,WAAWwE,QAAQle,EAAKyc,GAC9B7U,EAAM+V,UAAUlB,EAAMjG,IAG1ByH,EAAW9O,QAAQsN,KAGhBwB,GAOXQ,kBAAmB,WACf,MAAO1jB,MAAKod,mBAMhBgH,sBAAuB,SAAS7Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,GAIgB,MAAjExQ,OAAW,MAAMhE,QAAQjH,KAAK8C,OAAOK,UAAU,eACjDnD,KAAK8C,OAAOM,UAAU,YAAa,GAEmC,MAApE6H,OAAW,KAAM,GAAGhE,QAAQjH,KAAK8C,OAAOK,UAAU,eACpDnD,KAAK8C,OAAOM,UAAU,YAAa1F,EAAE8T,IAAK9T,EAAEqR,IAAIwE,EAAOtV,KAAM,SAASuB,GAAK,MAAOA,GAAE,OAAY,EAGpG,IAAIkc,GAASoI,EAAIpI,OACb2I,EAAU,GAAItmB,GAASumB,YAAY/Q,EAAOtV,KAAM+a,EAAOlY,IAAI,SAAUkY,EAAOlY,IAAI,OAAQd,KAAK8C,OAAOgE,oBAAqBiT,EAG7H,OAFAsK,GAAQE,KAAKT,EAAKpI,EAAOjL,MAAOiL,EAAOlO,OAAQiO,GAExC,GAAIK,GAAc9b,KAAMgZ,EAAQyC,EAASC,EAAQnI,EAAOtV,OAYnEkmB,UAAW,aAMXvB,UAAW,SAASlB,EAAMjG,GACtB,GACI+I,GAAe9C,EAAK/F,QAIxB+F,GAAK7F,oBAGL,IAAI1K,GAAO3S,KAAKJ,OAASsjB,EAAKtT,KAAOpO,KAAK4C,YAAa5C,KAAKuC,KAAK6I,QAAUpL,KAAKuC,KAAK6L,MAASqN,EAC1Fzb,MAAKmgB,cACLhP,GAAQnR,KAAKmgB,aAEjBqE,EAAalW,IAAI,OAAQ6C,GAEpBqT,EAAarjB,SAAS,UAGvBqjB,EAAajjB,YAAY,UAIzBvB,KAAKkJ,UAAUhI,OAAOsjB,GAK1BA,EAAalW,IAAI,SAAU,QAK3BtO,KAAKmd,cAAgB3e,KAAKgT,IAAIxR,KAAKmd,cAAeqH,EAAahX,SAAW,GAG1EgX,EAAa1kB,SAASG,WAAWqO,IAAI,SAAUtO,KAAKmd,cAAgB,KAGpE,IAAIsH,GAAezkB,KAAKmd,aACO,KAA3Bnd,KAAKod,oBACLqH,EAAejmB,KAAK4S,IAAIpR,KAAKmd,cAAend,KAAKod,oBAErDpd,KAAKkJ,UAAUoF,IAAI,SAAUmW,EAAe,OAMhDhL,+BAAgC,SAAST,GACrC,GAAInM,GAAQ7M,KACR0kB,EAAyBzZ,SAAX+N,EAAuBA,EAAO2L,WAAa,MACzDC,EAAYlnB,EAAEmnB,OAAQhY,EAAMiL,KAAKb,mBAAmB6N,KAAK,KAC7D,OAAO,cAAgBJ,EAAa,kBAAoBE,EAAY,KAMxE5H,yBAA0B,SAAS/e,EAAM8b,GAErC,MAAa,SAATA,GACO,EAGO,aAATA,EACwB,WAAtB9b,EAAK8mB,aAGe,WAAtB9mB,EAAK8mB,cACe,cAApB9mB,EAAK+mB,YACH,GAGA,GAOf/H,WAAY,SAASgI,GAEjB,MAAIA,GAAMlK,SAAgC,cAArBkK,EAAMD,YAChB,EAGqB,WAAvBC,EAAMF,aACHE,EAAMhnB,KAAK,GAAG,GAAKgnB,EAAMhnB,KAAK,GAAG,KAAO,GAG7C,GAMX4b,mBAAoB,WAEhB7Z,KAAKiP,aAAa6H,IAAI,YAAa,YACnC9W,KAAK0c,gBAAkB,IACvB1c,KAAKwc,mBAAqB,UA0ClC,IAAI1K,GAAa,SAAUvP,EAAM7C,GAC7B4c,EAAMjW,KAAKrG,KAAMuC,EAAM7C,GACnB2d,QAAQ,EACR1Z,QAAQ,IAEZ3D,KAAKwD,cAAclC,SAAU,eAEjC5C,GAAOoT,EAAW1N,UAAWkY,EAAMlY,WAC/BkB,KAAM,WAEFtF,KAAKyF,SAAU,GAMnB+Z,aAAc,aAEd7Z,MAAO,WAOH,IANA,GAAIpD,GAAOvC,KAAKuC,KACZ2iB,EAAQ3iB,EAAK8L,KAAO9L,EAAK6L,IACzB+W,EAAe3mB,KAAKmX,MAAOnX,KAAKC,IAAK,GAAID,KAAKmX,MAAOnX,KAAK4mB,IAAKF,GAAU1mB,KAAK4mB,IAAK,OACnF/kB,EAAW7B,KAAKmX,MAAOpT,EAAK6L,IAAM+W,GAAiBA,EACnD1U,EAAQzQ,KAAKuC,KAAK7C,UAAU+Q,QAC5B4U,EAAUtlB,EAAE,UAAUuB,SAAS,mBAC3BjB,EAAWkC,EAAK8L,MAAO,CAC3B,GAAIiX,GAAiB9mB,KAAKmX,OAAStV,EAAWkC,EAAK6L,KAAQ8W,EAAQzU,EACnE4U,GAAQnkB,OAAQnB,EAAE,UAAUuB,SAAS,aAAaiL,KAAK1O,EAAKmV,UAAW3S,IAAYiO,KAC/E6C,KAAMmU,KAEVjlB,GAAY8kB,EAEhBnlB,KAAKiI,YAAYhI,SAAU,UAAW+E,SACtChF,KAAKiI,YAAY/G,OAAQmkB,KAYjC,IAAI/b,GAAiB,SAAS/G,EAAM7C,EAAW8C,GAM3C,GALAwd,EAAW3Z,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAIvCxC,KAAKuG,aACD,aAAe/D,GAAU,CAEzB,IAAK,GADDiC,GACK5E,EAAI,EAAGA,EAAI2C,EAAS+D,UAAUnG,OAAQP,IAC3C4E,EAAWjC,EAAS+D,UAAU1G,GAC9BG,KAAKuG,UAAU1G,GAAK6G,EAAqBjC,EAAUlC,EAAM,MAGrDkC,EAAS0b,YAAcngB,KAAKmgB,cAC5BngB,KAAKmgB,YAAc1b,EAAS0b,YAGpCngB,MAAKyF,SAAU,EAInB/H,EAAE8M,KAAKxK,KAAKuG,UAAW,SAAS/G,IACxBA,YAAaqK,IAAgBrK,YAAaqf,KAC1Crf,EAAEsa,YAAY,cAItB9Z,KAAKkG,eAILlG,KAAKsG,SAAW,iBAGpB5H,GAAO4K,EAAelF,UAAW4b,EAAW5b,WACxCmhB,cAAeljB,EAEfY,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,YAAaC,MAAO,YAAaC,KAAM,QAASC,cAAe6F,SACpEhG,IAAK,YAAaC,MAAO,YAAaC,KAAM,QAASC,cAAe6F,SACpEhG,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,SAAUE,KAAM,MAAOC,cAAe,GAAIC,QAAQ,KAG7DhB,mBAIQhB,KAAM,iBACNiB,MAAO,yBACPC,UAAW,eACXC,YAAa,SAASqI,GAClB9M,EAAE,YAAYiF,SACd6H,EAAM4Y,gBAGhB1d,OAAOiY,EAAW5b,UAAUC,kBAO9BuB,QAASQ,EAAmBhC,UAAUwB,QAEtC/E,aAAcuF,EAAmBhC,UAAUvD,aAE3C2F,iBAAkBJ,EAAmBhC,UAAUoC,iBAE/ClD,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAK0F,cAAesD,kBAAkB,KAM1CqV,UAAW,WAEP,GAAIqH,GAAiB1lB,KAAKod,iBAC1B1f,GAAE8M,KAAKxK,KAAKuG,UAAW,SAAS/G,GAC5BA,EAAE4d,kBAAoBsI,IAE1BpJ,EAAMlY,UAAUia,UAAUhY,KAAKrG,OAMnC8Z,YAAa,SAAS6G,GAClBX,EAAW5b,UAAU0V,YAAYzT,KAAKrG,KAAM2gB,EAC5C,KAAK,GAAI9gB,GAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvCG,KAAKuG,UAAU1G,GAAGia,YAAY6G,IAOtCrb,KAAM,WAGF,IAAK,GADDqgB,MACK9lB,EAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvC8lB,EAAe9e,KAAK7G,KAAKuG,UAAU1G,GAAGyF,OAI1C,IAAIuH,GAAQ7M,IACZD,GAAEuP,KAAKC,MAAMxP,EAAG4lB,GAAgBpR,KAAK,WACjC1H,EAAMpH,SAAU,EAChBoH,EAAMnH,kBAIdQ,aAAc,WAEVlG,KAAK6C,aAAawG,aAAalF,OAC/BnE,KAAK6C,aAAage,WAAW1c,OAC7BnE,KAAK6C,aAAaie,qBAAqB3c,QAG3CqB,SAAUlD,EAAS8B,UAAUoB,SAE7Bgd,eAAgB,WACZ,MAAOxiB,MAAKuG,WAMhBkf,WAAY,WAMR,IAAK,GADD5Y,GAHAjE,EAAQ,GAAIZ,GAAchI,KAAKuC,KAAMvC,KAAKN,WACtC2D,KAAMrD,KAAK8C,OAAOK,UAAU,UAG3BtD,EAAI,EAAGA,EAAIG,KAAKuG,UAAUnG,OAAQP,IACvCgN,EAAQ7M,KAAKuG,UAAU1G,GACvBgN,EAAM3G,eACN0C,EAAM/H,aAAagM,GACnBA,EAAMnN,UAAYkJ,EAClBA,EAAMX,YAAY/G,OAAO2L,EAAMrJ,cAIvBxD,MAAKN,UAAUyH,iBAAiBnH,KAAM4I,GAAO,EACzDA,GAAMlD,cAAesD,kBAAkB,KAM3CiY,YAAa,WAST,GAAI7P,GAAM1T,EAAE0T,IAAI1T,EAAEqR,IAAI/O,KAAKuG,UAAW,SAAS/G,GAAK,MAAOA,GAAEsD,OAAOK,UAAU,gBAC1EqO,EAAM9T,EAAE8T,IAAI9T,EAAEqR,IAAI/O,KAAKuG,UAAW,SAAS/G,GAAK,MAAOA,GAAEsD,OAAOK,UAAU,eAE9EnD,MAAK8C,OAAOM,UAAU,YAAagO,GACnCpR,KAAK8C,OAAOM,UAAU,YAAaoO,GAGnC9T,EAAE8M,KAAKxK,KAAKuG,UAAW,SAAS/G,GAC5BA,EAAEsD,OAAOM,UAAU,YAAagO,GAChC5R,EAAEsD,OAAOM,UAAU,YAAaoO,MAOxCoU,mBAAoB,WAChB,GACIjG,GAAY3f,KAAK8C,OAAOK,UAAU,aAClCyc,EAAY5f,KAAK8C,OAAOK,UAAU,YACtCzF,GAAE8M,KAAKxK,KAAKuG,UAAW,SAAS/G,GAC5BA,EAAEsD,OAAOM,UAAU,YAAauc,GAChCngB,EAAEsD,OAAOM,UAAU,YAAawc,KAEpC5f,KAAK0F,cAAesD,kBAAkB,KAO1CyN,iBAAkB,SAAS+K,EAAO/Q,EAAOgL,GAErC,GAAqB5b,GAAjBgmB,EAAa,EACjB,KAAKhmB,EAAI,EAAGA,EAAI2hB,EAAMphB,OAAQP,IAAK,CAC/B,GAAI2N,GAASgU,EAAM3hB,GAAG8b,SAAS3a,KAAK,UAAUwM,QAC1CA,GAASqY,IACTA,EAAarY,GAIrB,IAAK3N,EAAI,EAAGA,EAAI2hB,EAAMphB,OAAQP,IAAK,CAC/B,GAAI6hB,GAAOF,EAAM3hB,EACb6hB,GAAK/F,SAAS3a,KAAK,UAAUwM,WAAaqY,IAC1C7lB,KAAKyhB,YAAYC,EAAK1I,OAAQyC,GAAW2G,OAAO,EAAM5U,OAAQqY,IAC9DnE,EAAK/F,SAAS3W,UAKtB,GAAI6H,GAAQ7M,KACRgP,EAAI,WAAanC,EAAM+Y,qBAG3B5lB,MAAK2hB,iBAAiB,MAAO3S,GAC7BhP,KAAK2hB,iBAAiB,MAAO3S,KAOrC,IAAI2E,GAAiB,SAAUpR,GAC3Byd,EAAW3Z,KAAKrG,KAAMuC,GAAQ0F,YAAa1F,EAAK6J,iBAAoBiR,QAAQ,EAAO1Z,QAAQ,IAG3F3D,KAAKmgB,YAAc5d,EAAKoJ,eAAema,cACvC9lB,KAAKwD,cAAclC,SAAS,mBAC5BtB,KAAK+lB,SAAWrZ,OAAOC,KAAO,eAAiB3M,KAAKuC,KAAKwI,MACzD/K,KAAKyc,uBAAyBhJ,WAAW,GACzCzT,KAAKiP,aAAe,GAAItR,GAAcqoB,4BAClCD,SAAU/lB,KAAK+lB,SACf9I,WAAYjd,KAAKid,aAErBjd,KAAK2E,gBAETjG,GAAOiV,EAAevP,UAAW9B,EAAS8B,UAAW4b,EAAW5b,WAC5DnB,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,SAAUE,KAAM,MAAOC,cAAe,GAAIC,QAAQ,KAG7DC,KAAM,WACFtF,KAAKiP,aAAa2P,QAElB5e,KAAKyF,SAAU,GAMnB+Z,aAAc,aAEdha,SAAUlD,EAAS8B,UAAUoB,SAK7Bic,YAAa,SAASzI,EAAQyC,EAAS9U,GACnC,GACIsf,GADAC,EAAclmB,KAAKkJ,UAAUnI,GAAG,YAEhC2gB,EAAO,IAqBX,OApBIjG,GAAUzb,KAAKuC,KAAKoJ,eAAema,eACnC9lB,KAAKkJ,UAAUhF,OACf+hB,GAAc,EACdvE,EAAO1B,EAAW5b,UAAUqd,YAAYpb,KAAKrG,KAAMgZ,EAAQyC,EAAS9U,KAGpEsf,GAAc,EACdjmB,KAAKkJ,UAAU/E,QASf+hB,IAAgBD,GAChBjmB,KAAKuC,KAAK6T,kBAGPsL,GAGXzE,WAAY,WAAkB,OAAO,GAKrCkH,UAAW,SAASlmB,EAAM6lB,EAAK/J,EAAMf,EAAQyC,GAEzC,GAAI0K,GAASnmB,KAAKiP,aAAaqU,aAAarlB,EAAM+a,GAC9CmD,EAAWgK,EAAOloB,KAGlByd,EAASoI,EAAIpI,MACjBoI,GAAIsC,KAAOtC,EAAIpI,OAAO2K,QAAQC,aAC9BxC,EAAIyC,UAAY,QAChB,KAAK,GAAIC,GAAI,EAAGC,EAAUtK,EAAS/b,OAAYqmB,EAAJD,EAAaA,IACpD1C,EAAI4C,UAAY1mB,KAAKuC,KAAK+P,eAAe6J,EAASqK,IAClD1C,EAAI6C,SAASxK,EAASqK,GAAIhoB,KAAKmX,MAAM6Q,EAAI/K,GAAU,GAEvD,OAAO,IAAID,GAAKxb,KAAMgZ,EAAQyC,EAASC,EAAQyK,KAOvD,IAAIrc,GAAY,SAAUvH,EAAM7C,EAAW8C,GACvCxC,KAAK+Z,KAAO,YACZiG,EAAW3Z,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAE3C9D,GAAOoL,EAAU1F,UAAW9B,EAAS8B,UAAW4b,EAAW5b,WACvDmhB,cAAeljB,EAEfY,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,QAASC,MAAO,QAASC,KAAM,UACpCF,IAAK,YAAaC,MAAO,YAAaC,KAAM,QAASC,cAAe6F,SACpEhG,IAAK,YAAaC,MAAO,YAAaC,KAAM,QAASC,cAAe6F,SACpEhG,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,SAAUE,KAAM,MAAOC,cAAe,GAAIC,QAAQ,KAG7D/B,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAK0F,cAAesD,kBAAkB,KAO1CiY,YAAa,aAKbkD,UAAW,SAAS5Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,GAC3C,MAAOzb,MAAKokB,sBAAsB7Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,IAMjEwB,WAAY,SAASgI,GACjB,MAAQA,GAAMhnB,KAAK,GAAG,GAAKgnB,EAAMhnB,KAAK,GAAG,KAAO,GAMpDwY,iBAAkB,WAEdzW,KAAK2hB,iBAAiB,OACtB3hB,KAAK2hB,iBAAiB,SAO9B,IAAIiF,GAAuB,SAAUrkB,EAAM7C,EAAW8C,GAClDxC,KAAK+Z,KAAO,UACZiG,EAAW3Z,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GAG3C9D,GAAOkoB,EAAqBxiB,UAAW9B,EAAS8B,UAAW4b,EAAW5b,WAClEmhB,eAAgB,WAEhBtiB,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,YAAaC,MAAO,iBAAkBC,KAAM,QAASC,cAAe,YACzEH,IAAK,YAAaC,MAAO,iBAAkBC,KAAM,QAASC,cAAe,YACzEH,IAAK,YAAaC,MAAO,YAAaC,KAAM,MAAOC,cAAe6F,SAClEhG,IAAK,YAAaC,MAAO,YAAaC,KAAM,MAAOC,cAAe6F,SAClEhG,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,SAAUE,KAAM,MAAOC,cAAe,IAAKC,QAAQ,KAG9D/B,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAK0F,cAAesD,kBAAkB,KAM1CwW,aAAc,WACV,GAAI3S,GAAQ7M,IACZ,OAAOD,GAAEqf,QAASvS,EAAM0J,QAAQlD,OACzB8L,UAAW,OAAQO,OAAO,EAAM7U,MAAOgC,EAAMtK,KAAKsI,MAAOuD,IAAK,EAC9DC,KAAMxB,EAAMtK,KAAK8I,SAAUuO,SAAU/M,EAAM0J,QAAQzV,IAAI,aAAe,SAASyS,GACvEA,EAAOtV,QAO1BkmB,UAAW,SAAS5Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,GAE3C,GAAIC,GAASoI,EAAIpI,OACb2I,EAAU,GAAItmB,GAAS8oB,uBAAuBtT,EAAOtV,KAAM+a,EAAOlY,IAAI,SAAUkY,EAAOlY,IAAI,OAAQd,KAAK8C,OAAOgE,oBAAqBiT,EAGxI,OAFAsK,GAAQE,KAAKT,EAAKpI,EAAOjL,MAAOiL,EAAOlO,OAAQiO,GAExC,GAAID,GAAKxb,KAAMgZ,EAAQyC,EAASC,EAAQnI,EAAOtV,QAO9D,IAAI4L,GAAe,SAAStH,EAAM7C,EAAW8C,GACzCwd,EAAW3Z,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GACvCxC,KAAKwD,cAAclC,SAAU,iBAC7BtB,KAAK8mB,oBAAsB,GAC3B9mB,KAAKugB,YACLvgB,KAAK+mB,iBACL/mB,KAAKmgB,YAAc,IAGnBngB,KAAKgnB,0BAETtoB,GAAOmL,EAAazF,UAAW9B,EAAS8B,UAAW4b,EAAW5b,WAC1DmhB,eAAgB,OAAQ,WAAY,QAAS,SAAU,QAEvDtiB,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,cAAeC,MAAO,cAAeC,KAAM,UAChDF,IAAK,uBAAwBC,MAAO,yBAA0BC,KAAM,UACpEF,IAAK,cAAeC,MAAO,cAAeC,KAAM,QAASC,cAAe,UACxEH,IAAK,cAAeC,MAAO,sBAAuBC,KAAM,OAAQC,eAAe,EAC/E6hB,KAAM,wEACNhiB,IAAK,YAAaC,MAAO,oBAAqBC,KAAM,QAASC,cAAe6F,OAAWgc,KAAM,qCAC7FhiB,IAAK,YAAaC,MAAO,oBAAqBC,KAAM,QAASC,cAAe6F,OAAWgc,KAAM,qCAC7FhiB,IAAK,kBAAmBC,MAAO,kBAAmBC,KAAM,SAAUC,cAAe,YAC/EuB,UAAazB,MAAO,mBAAoBwK,MAAO,aAAgBxK,MAAO,OAAQwK,MAAO,WACvFzK,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,SAAUE,KAAM,MAAOC,cAAe,EAAGC,QAAQ,KAG5D/B,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAKgnB,0BACLhnB,KAAK0F,cAAesD,kBAAkB,KAG1Cge,wBAAyB,WAEjBhnB,KAAKqkB,QADyC,SAA7CrkB,KAAK8C,OAAOK,UAAU,mBACRpF,EAASmpB,wBAETnpB,EAASopB,sBAQhC1Q,iBAAkB,SAAS+K,EAAO/Q,EAAOgL,EAASyF,GAC9ClB,EAAW5b,UAAUqS,iBAAiBpQ,KAAKrG,KAAMwhB,EAAO/Q,EAAOgL,EAASyF,EAExE,IACIrhB,GADAgN,EAAQ7M,KAERmiB,EAAmBzkB,EAAEqM,OAAOyX,EAAO,SAASxS,GACxC,MAAQA,aAAa8M,IAO7B,IAAgC,IAA5BqG,EAAiB/hB,OAAc,CAE/B,GAAIgnB,KACJ1pB,GAAE8M,KAAK9M,EAAE2pB,MAAM7F,EAAO,uBAAwB,SAAS8F,GACnD5pB,EAAE8M,KAAK8c,EAAc,SAAS7X,GAC1B2X,EAAwB3X,EAAQ,IAAMA,KAK9C,IAAIsD,GAAO/S,IACXtC,GAAE8M,KAAKgX,EAAO,SAASE,GAEnB,GAAI6F,GAA0B7pB,EAAE8pB,KAAKJ,EACA1pB,EAAEqR,IAAI2S,EAAKxF,oBAAqB,SAASuL,GAAK,MAAOA,GAAE,KAM5F,IAHAF,EAA2B7pB,EAAE8pB,KAAKD,EAA0B7pB,EAAEgqB,KAAKhG,EAAKrF,6BAG/B,IAArC3e,EAAEiqB,KAAKJ,GAAiC,CAGxC,GAAIK,IAAa3pB,KAAMP,EAAEmnB,OAAQ0C,IAC7B5D,EAAa5Q,EAAKxQ,KAAKoJ,eAAegY,aACtCkE,EAAiBlE,EAAWI,WAAW,KAC3CJ,GAAWnW,OAAShP,KAAKgT,IAAIkQ,EAAKhG,OAAOlO,OACZuF,EAAK2Q,kBAAkBkE,EAAUlG,EAAK3H,KAAM2H,EAAKjG,QAAS,MACvFkI,EAAWlT,MAAQiR,EAAKhG,OAAOjL,MAC/BoX,EAAeC,UAAUpG,EAAKhG,OAAQ,EAAG,GACzCmM,EAAe7D,UAAUnX,EAAMsT,YAAa,EAC5C,IAAI4H,GAAWhV,EAAKoR,UAAUyD,EAAUC,EAAgBnG,EAAK3H,KAC/B2H,EAAK1I,OAAQ0I,EAAKjG,QAASiG,EAAKvF,SAC9Dpc,GAAE2hB,EAAKhG,QAAQnU,YAAYxH,EAAEgoB,EAASrM,SACtCgG,EAAKhG,OAASiI,EACdjmB,EAAEgB,OAAOgjB,EAAKrF,2BAA4B+K,MAiCtD,GAAIva,EAAM1E,gBAAiB,CACvB,GACIsf,GADAhf,EAAUoE,EAAM1E,gBAAgBM,OAEpC,KAAKgf,EAAI,EAAGA,EAAIhf,EAAQrI,OAAQqnB,IAC5Bhf,EAAQgf,GAAGO,eAKf,IACIC,GACAle,EAFAkW,GAAoB,CAGxB,KAAKpgB,EAAI,EAAGA,EAAI2hB,EAAMphB,OAAQP,IAC1B,GAAI2hB,EAAM3hB,GAAG5B,KAAKmC,OAEd,IADA6nB,EAAkBzG,EAAM3hB,GAAG5B,KAAK,GAC3BwpB,EAAI,EAAGA,EAAIhf,EAAQrI,OAAQqnB,IAE5B,GADA1d,EAAStB,EAAQgf,GACZ1d,EAAOme,WAAWD,IAClBle,EAAOqH,MAAQrH,EAAOyH,IAAM,CAC7ByO,GAAoB,CACpB,OAOZpT,EAAMoT,oBAAsBA,IAC5BpT,EAAMoT,kBAAoBA,EACrBpT,EAAMoT,mBACPpT,EAAM1E,gBAAgBhE,OAE1B0I,EAAM3G,gBAOd,GAAIsb,EAAM,YAAczF,GAAkB,CACtC,GAAIC,IAAc,CAClB,KAAKnc,EAAI,EAAGA,EAAI2hB,EAAMphB,OAAQP,IAC1B,IAAK2hB,EAAM3hB,GAAGmc,YAAa,CACvBA,GAAc,CACd,OAGRhc,KAAK6C,aAAaslB,oBAAoBlf,QAAQ+S,OAG9Chc,MAAK6C,aAAaslB,oBAAoBhkB,QAO9Coe,iBAAkB,SAASxI,GACL,SAAd/Z,KAAK+Z,OACQ,cAATA,IACAA,EAAO,iBAEX/Z,KAAK6C,aAAa+d,UAAU7hB,KAAK,QAAS,+BAAiCgb,EAAO,OAS1FqO,kBAAmB,SAASC,EAAOT,EAAU7N,GAKzC,GAAIuO,GAAgBtoB,KAAKuC,KAAKoJ,eAAe2c,cACzCC,EAAUvoB,KAAKugB,SAAS8H,EAM5B,OALKE,IAAYA,EAAQxO,OAASA,IAC9BwO,EAAU,GAAKzqB,GAAuB,eAAGuqB,EAAOtO,EAAMtY,EAAmB,SAAW+mB,GAAM,MAAOF,GAAcG,YAAaD,KAC5HxoB,KAAKugB,SAAS8H,GAASE,GAGpBA,EAAQG,cAAed,IAMlCtF,SAAU,SAASrkB,GAwBf,MArBI8b,MADoB,cAApB9b,EAAK+mB,YAA8BhlB,KAAK4C,YACjC,YAeF5C,KAAKuC,KAAK8L,KAAOrO,KAAKuC,KAAK6L,IAAM1M,EAC3B,SAEA,OAGRqY,MAOX2J,kBAAmB,SAASnQ,EAAQwG,EAAM0B,EAASkN,GAC/C,GAAa,aAAT5O,GAA+C,WAAxBxG,EAAOwR,aAC9B,MAAO/kB,MAAK8mB,mBAIZ,IAAI8B,GAAgB5oB,KAAKooB,kBAAkB3M,EAASlI,EAAOtV,KAAM8b,GAG7D8O,EAAgB,GAAK7oB,MAAY,QAAE,KAAM,KAAM,KAAMA,KAAK8C,OAAOgE,oBAAqBiT,EAC1F,OAAOvb,MAAKgT,IAAIxR,KAAKkd,cAAe2L,EAAcC,oBAAoBF,EAAeD,KAc7FxE,UAAW,SAAS5Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,EAASsN,EAASC,GAC7D,GAAInc,GAAQ7M,KACR0b,EAASoI,EAAIpI,OACbkI,EAAW5K,EAAOlY,IAAI,SACtB+iB,EAAY7K,EAAOlY,IAAI,OACvBqf,EAAcngB,KAAKmgB,WAGvB,IAA4B,WAAxB5M,EAAOwR,aACP,MAAO/kB,MAAKokB,sBAAsB7Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,EAMjE,IACIwN,MACAC,EAAQlpB,KAAKugB,SAAS9E,GAASyN,KAEnC,IADIlN,aAAc,EACbzI,EAAOtV,KAER,IAAK,GADDwK,GAAUzI,KAAKmI,gBAAgBM,QAC1B5I,EAAI,EAAGiU,EAAMP,EAAOtV,KAAKmC,OAAY0T,EAAJjU,EAASA,IAAK,CAIpD,IAAK,GADDkK,GAFA0F,EAAU8D,EAAOtV,KAAK4B,GACtBspB,GAAe,EAEV1B,EAAI,EAAG2B,EAAO3gB,EAAQrI,OAAYgpB,EAAJ3B,EAAUA,IAG7C,GAFA1d,EAAStB,EAAQgf,GACjB1d,EAAOsf,aAAa5Z,IACf1F,EAAOuf,KAAK7Z,GAAU,CACvB0Z,GAAe,CACf,OAGHA,IAEDF,EAASpiB,KAAK4I,GAEPA,EAAQ,IAAMyZ,KACjBlN,aAAc,IAO9B,GAAIuN,GAAuBvpB,KAAKmI,gBAAgBqhB,aAAe,GAAIxO,GAAahb,KAAKmI,gBAAgBqhB,cAAgB,KACjHC,EAAwBzpB,KAAKmI,gBAAgBuhB,cAAgB,GAAI1O,GAAahb,KAAKmI,gBAAgBuhB,eAAiB,KACpHrF,EAAU,GAAKrkB,MAAY,QAAEipB,EAAUrF,EAAUC,EAAW7jB,KAAK8C,OAAOgE,oBAAqBiT,EAAMwP,EAAqBE,EAE3FV,EAEA,SAASY,GAAK,MAAO9c,GAAMtK,KAAK+P,eAAeqX,KAC5E1N,EAAiB,IAMrB,IAJA6H,EAAI4C,UAAY1mB,KAAK8C,OAAOK,UAAU,eACtC2gB,EAAIsC,KAAOtC,EAAIpI,OAAO2K,QAAQC,aAC9BxC,EAAIyC,UAAY,QAEZhT,EAAOtV,KAAM,CAEb,GAAI2rB,GAAevF,EAAQE,KAAKT,EAAKpI,EAAOjL,MAAOiL,EAAOlO,OAAQiO,EAASyN,EAC3EjN,GAAiB2N,EAAa3N,eAC9BC,oBAAsB0N,EAAa1N,oBACnCD,EAAe4N,aAAe1J,EAIlC,MAAK6I,GAAL,OACW,GAAIjN,GAAiBlP,EAAOmM,EAAQyC,EAASC,EAAQnI,EAAOtV,KAAM8b,EAC7CxG,EAAOwH,QAASiB,YAAaC,EAC7BC,oBAAqB6M,KAQ7D,IAAIjK,GAAe,SAASvc,EAAM7C,EAAW8C,GACzCwd,EAAW3Z,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GACvCxC,KAAKqkB,QAAUtmB,EAAS+rB,eACxB9pB,KAAK8mB,oBAAsB,GAI3B9mB,KAAKmgB,YAAc,GAGvBzhB,GAAOogB,EAAa1a,UAAW9B,EAAS8B,UAAW4b,EAAW5b,WAC1DmhB,eAAgB,OAAQ,WAAY,QAAS,SAAU,QAEvDtiB,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,QAASC,MAAO,kBAAmBC,KAAM,UAC9CF,IAAK,mBAAoBC,MAAO,mBAAoBC,KAAM,OAAQC,eAAe,IACjFH,IAAK,cAAeC,MAAO,iCAAkCC,KAAM,OAAQC,eAAe,IAC1FH,IAAK,iBAAkBC,MAAO,uBAAwBC,KAAM,QAASC,cAAe,KACpFH,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,SAAUE,KAAM,MAAOC,cAAe,EAAGC,QAAQ,KAG5D/B,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAK0F,cAAesD,kBAAkB,KAM1Cmb,UAAW,SAAS5Q,EAAQuQ,EAAK/J,EAAMf,EAAQyC,GAE3C,GAA4B,WAAxBlI,EAAOwR,aACP,MAAO/kB,MAAKokB,sBAAsB7Q,EAAQuQ,EAAK,YAAa9K,EAAQyC,EAGpE,IAAIlZ,GAAOvC,KAAKuC,KACZ8hB,EAAU,GAAKrkB,MAAY,QAAEuT,EAAOtV,KAAM+a,EAAOlY,IAAI,SAAUkY,EAAOlY,IAAI,OAAQd,KAAK8C,OAAOgE,oBAAqBiT,EACtF,SAAS4P,GAAK,MAAOpnB,GAAK+P,eAAeqX,IAE1E,OADAtF,GAAQE,KAAKT,EAAKA,EAAIpI,OAAOjL,MAAOqT,EAAIpI,OAAOlO,OAAQiO,GAChD,GAAID,GAAKxb,KAAMgZ,EAAQyC,EAASqI,EAAIpI,OAAQnI,EAAOtV,OAQlEylB,kBAAmB,SAASnQ,EAAQwG,GAChC,GAA4B,WAAxBxG,EAAOwR,aACP,MAAO/kB,MAAK8mB,mBAOZ,IAAIiD,GAAgB/pB,KAAKuW,QAAQyT,aAAa,gBAAkBhqB,KAAKuW,QAAQyT,aAAa,gBAAgB5pB,OAAS,CAC/F,KAAhB2pB,GAA4C,IAAvBxW,EAAOtV,KAAKmC,SAEjC2pB,EAAcxW,EAAOtV,KAAK,GAAG,GAAGgsB,MAAM,MAElCF,EADiB,OAAhBA,EACa,EAGAA,EAAY3pB,OAAS,EAI3C,IAAIyoB,GAAgB,GAAK7oB,MAAY,QAAE,KAAM,KAAM,KAAMA,KAAK8C,OAAOgE,oBAAqBiT,EAC1F,OAAO8O,GAAcC,oBAAoBiB,IAOjDvK,aAAc,WACV,GAAI0K,IAAc5N,EAAMlY,UAAUob,aAAanZ,KAAKrG,MAMpD,OAHKA,MAAKuW,QAAQyT,aAAa,iBAC3BE,EAAUrjB,KAAK7G,KAAKuW,QAAQ4T,SAEzBD,GAOXzT,iBAAkB,SAAS+K,EAAO/Q,EAAOgL,EAASyF,GAC9ClB,EAAW5b,UAAUqS,iBAAiBpQ,KAAKrG,KAAMwhB,EAAO/Q,EAAOgL,EAASyF,EAExE,IAAIiB,GAAmBzkB,EAAEqM,OAAOyX,EAAO,SAASxS,GAC5C,MAAQA,aAAa8M,KAIrBsO,EAAepqB,KAAKuW,QAAQyT,aAAa,eAC7C,IAAgC,IAA5B7H,EAAiB/hB,QAAgBJ,KAAK8C,OAAOK,UAAU,gBAAkBinB,GAAgBA,EAAahqB,OAAS,EAAG,CAClH,GAAIiqB,EAGJ,IAA8D,IAA1DrqB,KAAKwD,cAAcxC,KAAK,uBAAuBZ,SAI/CiqB,EAAYrqB,KAAK8C,OAAOK,UAAU,kBAAoB,EACtDnD,KAAKkJ,UAAUjI,QACXlB,EAAE,UAAUwM,KAAK,WAAWjL,SAAS,0BAA0BgN,KAC3Dgc,YAAaD,EAAY,KACzB1qB,KAAQK,KAAK8C,OAAOK,UAAU,kBAAoBknB,GAAa,EAAI,QAKvErqB,KAAK8C,OAAOK,UAAU,qBAAqB,CAC3C,GAAIonB,GAAmBH,EAAatF,KAAK,QAEzC9kB,MAAKkJ,UAAUjI,QACXlB,EAAE,UAAUkU,KAAKsW,GAAkBjpB,SAAS,iCAAiCgN,KACzE3O,IAAOK,KAAK8C,OAAOK,UAAU,qBAS7CknB,GAA2B,WAAdrqB,KAAK+Z,KAAoB,EAAI,IAAM,KAChDha,EAAEC,KAAKkJ,WAAWlI,KAAK,WAAWsN,KAC9Bgc,YAAaD,EACbG,cAAeH,IAGnBtqB,EAAEC,KAAKkJ,WAAWlI,KAAK,eAAesN,IAAI,QAAStO,KAAK8C,OAAOK,UAAU,oBAIzEnD,MAAKwD,cAAcxC,KAAK,uBAAuBgE,WAQ3D,IAAI6Z,GAAY,SAAUtc,EAAM7C,EAAW8C,GACvCqH,EAAaxD,KAAKrG,KAAMuC,EAAM7C,EAAW8C,GACzCxC,KAAKqkB,QAAUtmB,EAAS0sB,YACxBzqB,KAAKkG,eAGTxH,GAAOmgB,EAAUza,UAAW9B,EAAS8B,UAAW4b,EAAW5b,UAAWyF,EAAazF,WAC/EnB,cAAevF,EAAE8nB,MAAOljB,EAAS8B,UAAUnB,gBACrCgC,IAAK,cAAeC,MAAO,kBAAmBC,KAAM,UACpDF,IAAK,qBAAsBC,MAAO,2BAA4BC,KAAM,QAASC,cAAiB,YAC9FH,IAAK,uBAAwBC,MAAO,+BAAgCC,KAAM,QAASC,cAAiB,YACpGH,IAAK,cAAeC,MAAO,cAAeC,KAAM,QAASC,cAAe,UACxEH,IAAK,kBAAmBC,MAAO,kBAAmBC,KAAM,OAAQC,eAAe,IAC/EH,IAAK,mBAAoBC,MAAO,wBAAyBC,KAAM,OAAQC,eAAe,IACtFH,IAAK,cAAeC,MAAO,sBAAuBC,KAAM,OAAQC,eAAe,IAC/EH,IAAK,OAAQE,KAAM,SAAUC,cAAepF,KAAK+Z,KAAM1U,QAAQ,IAC/DJ,IAAK,YAAaC,MAAO,oBAAqBC,KAAM,QAASC,cAAe6F,OAAWgc,KAAM,qCAC7FhiB,IAAK,YAAaC,MAAO,oBAAqBC,KAAM,QAASC,cAAe6F,OAAWgc,KAAM,qCAC7FhiB,IAAK,SAAUE,KAAM,MAAOC,cAAe,EAAGC,QAAQ,KAG5D/B,gBAAiB,WACbtD,KAAK6F,SAAS7F,KAAK8C,OAAOK,UAAU,SACpCnD,KAAK0F,cAAesD,kBAAkB,MAO9C,IAAI0hB,IACAphB,eAAkBA,EAClBtB,cAAiBA,EACjB4e,qBAAwBA,EACxB/c,aAAgBA,EAChBC,UAAaA,EACb+U,UAAaA,EACbC,aAAgBA,EAEhB6L,SAAY7L,GAOZpY,EAAuB,SAASkkB,EAAUroB,EAAM7C,GAChD,GAAI,QAAUkrB,GAEV,MAAOA,GAASpU,KAAK9W,EAIrB,IACGmrB,GAAgBD,EAAStkB,QAK5B,OAHKukB,KACDA,EAAgBD,EAASljB,YAEtB,GAAIgjB,GAAiBG,GAAgBtoB,EAAM7C,EAAWkrB,GAIrE,QACIngB,cAAeA,EACfzC,cAAeA,EACf8B,UAAWA,EACXD,aAAcA,EACd+c,qBAAsBA,EACtB/H,UAAWA,EACXC,aAAcA,EACdxV,eAAgBA,EAChB5C,qBAAsBA"} \ No newline at end of file +{"version":3,"file":"tracks.js","sources":["../../../src/viz/trackster/tracks.js"],"names":["define","_","visualization","viz_views","util","slotting","painters","filters_mod","data","tools_mod","config_mod","bbi","round","num","places","val","Math","pow","extend","html_elt_js_obj_dict","is_container","element","obj","attr","moveable","handle_class","container_selector","element_js_obj","bind","handle","relative","e","d","child","container","top","bottom","i","parent","$","this","children","this_obj","parents","length","position","outerHeight","cur_container","offsetY","insertBefore","remove_drawable","add_drawable_before","insertAfter","add_drawable","get","is","find","prepend","append","hasClass","move_drawable","deltaY","addClass","removeClass","ERROR_PADDING","MAX_FEATURE_DEPTH","MIN_SQUISH_VIEW_WIDTH","TILE_SIZE","DEFAULT_DATA_QUERY_WAIT","MAX_CHROMS_SELECTABLE","DATA_ERROR","DATA_NOCONVERTER","DATA_NONE","DATA_PENDING","DATA_CANNOT_RUN_TOOL","DATA_OK","TILE_CACHE_SIZE","CONTINUOUS_DATA_MODES","Drawable","view","obj_dict","id_counter","id","drag_handle_class","is_overview","action_icons","config","ConfigSettingCollection","from_models_and_saved_values","config_params","prefs","get_value","set_value","name","config_onchange","on","container_div","build_container_div","header_div","header","header_view","TrackHeaderView","model","$el","icons_div","hover","show","hide","prototype","action_icons_def","title","css_class","on_click_fn","drawable","toggle_icon","hide_contents","show_contents","ConfigSettingCollectionView","collection","render_in_modal","remove","key","label","type","default_value","hidden","init","changed","can_draw","enabled","request_draw","_draw","to_dict","set_name","new_name","old_name","revert_name","update_intro_div","update_icons","get_drawables","DrawableCollection","call","obj_type","drawables","unpack_drawables","drawables_array","object_from_template","options","dictified_drawables","push","to_key_value_dict","other","index","indexOf","splice","replace_drawable","old_drawable","new_drawable","update_html","replaceWith","new_position","get_tracks","track_type","queue","slice","tracks","shift","concat","DrawableGroup","content_div","appendTo","filters_manager","FiltersManager","after","parent_div","saved_filters_managers","old_manager","filters","visible","setup_multitrack_filtering","group","show_composite_track","clear_filters","_restore_filter_managers","clear_tile_cache","toggle","tiles_div","num_drawables","composite_icon","filters_icon","CompositeTrack","j","same_type","a_type","get_type","num_feature_tracks","can_composite","FeatureTrack","LineTrack","filter","shared_filters","remove_all","new_filter","filter_name","NumberFilter","add_filter","init_filters","composite_track","each","TracksterView","Backbone","View","initialize","chrom","vis_id","dbkey","stand_alone","undefined","label_tracks","tracks_to_be_redrawn","max_low","max_high","zoom_factor","min_separation","has_changes","load_chroms_deferred","render","canvas_manager","CanvasManager","ownerDocument","reset","requested_redraw","parent_element","top_container","browser_content_div","bottom_container","top_labeltrack","viewport_container","intro_div","text","click","select_datasets","Galaxy","root","f-dbkey","track","nav_container","prependTo","nav","overview","overview_viewport","overview_close","overview_highlight","overview_box_background","overview_box","default_overview_height","height","nav_controls","chrom_select","submit_nav","keyCode","which","go_to","location_span","stopPropagation","nav_input","tooltip","placement","low","high","css","select","focus","autocomplete","source","request","response","all_features","feature_search_deferreds","map","t","data_manager","search_features","term","success","dataset_features","when","apply","done","feature","value","minLength","hidden_input","zo_link","zoom_out","zi_link","zoom_in","load_chroms","change_chrom","trigger","pageX","current_x","offsetX","delta","delta_chrom","width","move_delta","reset_overview","clientX","original_low","current_height","clientY","new_scroll","scrollTop","proxy","left","min","startX","offset","abs","max","span","update_location","old_low","request_redraw","add_label_track","LabelTrack","window","resize_timer","clearTimeout","setTimeout","resize_window","document","redraw","get_base_color","base","toLowerCase","trigger_navigate","new_chrom","new_low","new_high","delay","timer","self","commatize","url_parms","chrom_data","Deferred","ajax","url","dataType","result","chrom_info","reference","ref_track","ReferenceTrack","reference_track","chrom_options","len","prev_chroms","next_chroms","html","chrom_start_index","start_index","resolve","error","alert","then","found","grep","v","str","replace","chrom_pos","split","parseInt","move_fraction","fraction","current_chrom_span","data_fetch","redraw_on_move_fn","label_track","track_list","track_options","to","requestAnimationFrame","_redraw","floor","ceil","resolution_px_b","left_px","width_px","min_width_px","point","cur_center","new_half","resize_viewport","set_overview","overview_drawable","dataset","copy","postdraw_actions","TracksterTool","Tool","defaults","tool_state","set","remove_inputs","state_dict","get_inputs_dict","is_visible","ToolParameterView","events","change :input","param_div","param","html_div","update_value","update_event","target","TracksterToolView","set_visible","tool","keydown","param_view","run_tool_row","run_on_dataset_button","run_on_region_button","run_on_region","run_on_dataset","update_params","params","run","target_dataset_id","action","tool_id","modal","body","buttons","Close","region","GenomeRegion","start","end","url_params","regions","toJSON","current_track","track_name","tool_region_and_parameters_str","new_track","constructor","hda_ldda","init_for_tool_data","change_mode","mode","set_filters_manager","track_data","set_dataset","Dataset","success_callback","inputs","ss_deferred","ServerStateDeferred","ajax_settings","JSON","stringify","contentType","interval","success_fn","go","message","FilterScaler","default_val","Scaler","gen_val","feature_data","Number","MAX_VALUE","parseFloat","Tile","w_scale","canvas","html_elt","stale","predisplay_actions","LineTrackTile","FeatureTrackTile","all_slotted","feature_mapper","incomplete_features","seq_data","has_icons","other_tiles_features_drawn","Track","Model","dataset_check_type","data_url_extra_params","data_query_wait","GenomeDataManager","genome","Genome","chroms_info","data_mode_compatible","data_and_mode_compatible","can_subset","min_height_px","max_height_px","visible_height_px","resize","add_resize_handle","cancel_fn","unbind","ok_fn","regions_to_use","view_region","bookmarked_regions","elt","from_str","location","href","dataset_id","Collection","No","Yes","on_resize","in_handle","in_drag","drag_control","original_height","new_height","tile_cache","clear","ReadTrack","VariantTrack","show_message","msg_html","retry","init_deferred","data_type","getJSON","kind","status","valid_chroms","predraw_init","msg_elt","stats","min_value","max_value","mean","sd","set_default_value","TiledTrack","filters_available","Cache","left_offset","tool_view","dynamic_tool_div","overlay_div","slotters","max_rows","set_min_max","isNaN","new_mode","mode_icon","tools_icon","param_space_viz_icon","_gen_tile_cache_key","tile_region","before_draw","clear_after","resolution","tile_promise","tile_width","tile_index","tile_promises","tiles","draw_helper","tile","_add_yaxis_label","on_change","pref_name","make_text_editable","num_cols","on_finish","new_val","help_text","line_track_tiles","force","icons_present","get_mode","update_auto_mode","_get_drawables","is_tile","o","get_elt","show_tile","get_tile_data","data_mode","m","tile_data","get_data","tile_drawn","set_elt","tracks_data","is_deferred","subset_entry","pop","drawing_modes","drawing_heights","get_canvas_height","new_canvas","tile_low","tile_high","ctx","getContext","translate","globalAlpha","globalCompositeOperation","draw_tile","_draw_line_track_tile","painter","LinePainter","draw","tile_element","track_height","region_str","toString","param_str","values","join","dataset_type","extra_info","entry","range","tickDistance","log","new_div","screenPosition","display_modes","union","show_group","visible_height","init_deferreds","update_all_min_max","max_height","char_width_px","data_url","GenomeReferenceDataManager","new_visible","cur_visible","subset","font","manager","default_font","textAlign","c","str_len","fillStyle","fillText","BBIDataManager","DiagonalHeatmapTrack","DiagonalHeatmapPainter","summary_draw_height","start_end_dct","set_painter_from_config","help","ArcLinkedFeaturePainter","LinkedFeaturePainter","all_incomplete_features","pluck","inc_features","tile_incomplete_features","omit","f","keys","size","features","new_canvas_ctx","drawImage","new_tile","update_ui_elt","example_feature","applies_to","show_more_rows_icon","incremental_slots","level","dummy_context","slotter","x","measureText","slot_features","canvas_width","rows_required","dummy_painter","get_required_height","ref_seq","cur_tile","filtered","slots","hide_feature","flen","update_attrs","keep","filter_alpha_scaler","alpha_filter","filter_height_scaler","height_filter","b","draw_results","translation","VariantPainter","num_samples","get_metadata","match","deferreds","fetch","sample_names","font_size","font-size","samples_div_html","line-height","ReadPainter","addable_objects","VcfTrack","template","drawable_type"],"mappings":"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"} \ No newline at end of file diff --git a/static/scripts/libs/bbi/bigwig.js b/static/scripts/libs/bbi/bigwig.js new file mode 100644 index 00000000000..436aebd0c0c --- /dev/null +++ b/static/scripts/libs/bbi/bigwig.js @@ -0,0 +1,2 @@ +define(["libs/bbi/spans","libs/bbi/jszlib","libs/bbi/jquery-ajax-native"],function(a,b){"use strict";function c(){}function d(a){a&&(this.id=a)}function e(a,b){return a[b+3]<<24|a[b+2]<<16|a[b+1]<<8|a[b]}function f(a,b,c){Math.pow(10,6);return $.ajax({type:"GET",dataType:"native",url:a,timeout:5e3,beforeSend:function(a){a.setRequestHeader("Range","bytes="+b+"-"+(b+(c-1)))},xhrFields:{responseType:"arraybuffer"}})}function g(a,b){var c=a[b]+a[b+1]*x+a[b+2]*y+a[b+3]*z+a[b+4]*A;return c}function h(){}function i(a,b,c,d){this.bwg=a,this.cirTreeOffset=b,this.cirTreeLength=c,this.isSummary=d}function j(a){var b=$.Deferred(),c=new h;return c.url=a,$.when(f(c.url,0,512)).then(function(a){if(!a)return b.resolve(null,"Couldn't fetch file");var d=a,e=new Uint8Array(d),f=new Int16Array(d),h=new Int32Array(d),i=e[0]+x*e[1]+y*e[2]+z*e[3];if(i==q)c.type="bigwig";else{if(i!=s)return i==r||i==t?b.resolve(null,"Currently don't support big-endian BBI files"):b.resolve(null,"Not a supported format, magic=0x"+i.toString(16));c.type="bigbed"}c.version=f[2],c.numZoomLevels=f[3],c.chromTreeOffset=g(e,8),c.unzoomedDataOffset=g(e,16),c.unzoomedIndexOffset=g(e,24),c.fieldCount=f[16],c.definedFieldCount=f[17],c.asOffset=g(e,36),c.totalSummaryOffset=g(e,44),c.uncompressBufSize=h[13],c.extHeaderOffset=g(e,56),c.zoomLevels=[];for(var j=0;jj;++j)if(0===e){b+=f;var k=g(c,b);b+=8,k-=a.chromTreeOffset,i(k)}else{for(var l="",m=0;f>m;++m){var n=c[b++];0!==n&&(l+=String.fromCharCode(n))}{var o=c[b+3]<<24|c[b+2]<<16|c[b+1]<<8|c[b+0];c[b+7]<<24|c[b+6]<<16|c[b+5]<<8|c[b+4]}b+=8,a.chromsToIDs[l]=o,0===l.indexOf("chr")&&(a.chromsToIDs[l.substr(3)]=o),a.idsToChroms[o]=l,a.maxID=Math.max(a.maxID,o)}};i(h)})},i.prototype.readWigData=function(a,b,c){var d,e=this.bwg.chromsToIDs[a];return d=void 0===e?[]:this.readWigDataById(e,b,c)},i.prototype.readWigDataById=function(a,b,c){var d=this,e=$.Deferred();if(!this.cirHeader)return $.when(f(d.bwg.url,this.cirTreeOffset,48)).then(function(f){d.cirHeader=f;var g=new Int32Array(d.cirHeader);d.cirBlockSize=g[1],$.when(d.readWigDataById(a,b,c)).then(function(a){e.resolve(a)})}),e;var h=[],i=0,j=(Date.now(),function(d,e,f){return(0>a||d==a)&&c>=e&&f>=b}),k=function(a,b){if(d.bwg.instrument&&console.log("level="+b+"; offset="+a+"; time="+(0|Date.now())),i+=a.length,1==a.length&&a[0]-d.cirTreeOffset==48&&d.cachedCirRoot)return o(d.cachedCirRoot,0,b),--i,void(0===i&&$.when(d.fetchFeatures(j,h)).then(function(a){e.resolve(a)}));for(var c,f=4+32*d.cirBlockSize,g=0;go;++o){var p=e/4,q=l[p],r=l[p+1],s=l[p+2],t=l[p+3],u=g(i,e+16),v=g(i,e+24);(0>a||a>q||q==a&&c>=r)&&(0>a||s>a||s==a&&t>=b)&&h.push({offset:u,size:v}),e+=32}else{for(var w=[],o=0;n>o;++o){var p=e/4,q=l[p],r=l[p+1],s=l[p+2],t=l[p+3],u=g(i,e+16);(0>a||a>q||q==a&&c>=r)&&(0>a||s>a||s==a&&t>=b)&&w.push(u),e+=24}w.length>0&&k(w,f+1)}};return k([d.cirTreeOffset+48],1),e},i.prototype.fetchFeatures=function(a,b){var d=this,e=$.Deferred();if(b.sort(function(a,b){return(0|a.offset)-(0|b.offset)}),0===b.length)return[];var g=[],h=function(a,b,e,f){f||(f={});var h=new c;h._chromId=a,h.segment=d.bwg.idsToChroms[a],h.min=b,h.max=e,h.type=d.bwg.type;for(var i in f)h[i]=f[i];g.push(h)},i=function(){if(0===b.length){{Date.now()}return e.resolve(g)}var c=b[0];if(c.data)d.parseFeatures(c.data,h,a),b.splice(0,1),i();else{for(var j=c.offset,k=c.size,l=1;lc;){var f,g=b[e];if(d.bwg.uncompressBufSize>0)f=o(a,c+2,g.size-2);else{var h=new Uint8Array(g.size);p(new Uint8Array(a,c,g.size),0,h,0,g.size),f=h.buffer}g.data=f,c+=g.size,++e}i()})}};return i(),e},i.prototype.parseFeatures=function(a,b,c){var e=new Uint8Array(a);if(this.isSummary)for(var f=new Int16Array(a),g=new Int32Array(a),h=new Float32Array(a),i=a.byteLength/32,j=0;i>j;++j){{var k=g[8*j],o=g[8*j+1],p=g[8*j+2],q=g[8*j+3],r=(h[8*j+4],h[8*j+5]),s=h[8*j+6];h[8*j+7]}if(c(k,o+1,p)){var t={type:"bigwig",score:s/q,maxScore:r};"bigbed"==this.bwg.type&&(t.type="density"),b(k,o+1,p,t)}}else if("bigwig"==this.bwg.type){var f=new Int16Array(a),g=new Int32Array(a),h=new Float32Array(a),k=g[0],x=g[1],y=(g[2],g[3]),z=g[4],A=e[20],i=f[11];if(A==w)for(var j=0;i>j;++j){var C=h[j+6],D=x+j*y+1,E=x+j*y+z;c(k,D,E)&&b(k,D,E,{score:C})}else if(A==v)for(var j=0;i>j;++j){var o=g[2*j+6]+1,p=o+z-1,C=h[2*j+7];c(k,o,p)&&b(k,o,p,{score:C})}else if(A==u)for(var j=0;i>j;++j){var o=g[3*j+6]+1,p=g[3*j+7],C=h[3*j+8];o>p&&(o=p),c(k,o,p)&&b(k,o,p,{score:C})}else console.log("Currently not handling bwgType="+A)}else{if("bigbed"!=this.bwg.type)throw Error("Don't know what to do with "+this.bwg.type);for(var F=0,G=this.bwg.definedFieldCount,H=this.bwg.schema;F0?I.split(" "):[],K.length>0&&G>3&&(L.label=K[0]),K.length>1&&G>4){var C=parseInt(K[1]);isNaN(C)||(L.score=C)}if(K.length>2&&G>5&&(L.orientation=K[2]),K.length>5&&G>8){var M=K[5];B.test(M)&&(L.itemRgb="rgb("+M+")")}if(K.length>G-3&&H)for(var N=G-3;NG)b(k,o+1,p,L);else{var O=0|K[3],P=0|K[4],Q=0|K[6],R=K[7].split(","),S=K[8].split(",");if(L.exonFrames){var T=L.exonFrames.split(",");L.exonFrames=void 0}L.type="transcript";var U=new d;for(var V in L)U[V]=L[V];if(U.id=K[0],U.segment=this.bwg.idsToChroms[k],U.min=o+1,U.max=p,U.notes=[],L.groups=[U],K.length>9){var W=L.geneName||K[9],X=W;K.length>10&&(X=K[10]),L.geneName2&&(X=L.geneName2);var Y=$.extend({},U);Y.id=W,Y.label=X,Y.type="gene",L.groups.push(Y)}for(var Z=[],_=0;Q>_;++_){var aa=(0|S[_])+o,ba=aa+(0|R[_]),ca=new l(aa,ba);Z.push(ca)}for(var da=m(Z),ea=da.ranges(),fa=0;faO){var ha="+"==L.orientation?new l(O,P+3):new l(O-3,P),ia=n(da,ha);if(ia){L.type="translation";for(var ja=ia.ranges(),ka=0,la=0;ja[0].min()>ea[la].max();)la++;for(var fa=0;fa=0&&2>=na&&(L.readframe=na,L.readframeExplicit=!0)}var oa=ga.max()-ga.min();ka=(ka+oa)%3,b(k,ga.min()+1,ga.max(),L)}}}}}}},i.prototype.getFirstAdjacent=function(a,b,c,d){var e=this.bwg.chromsToIDs[a];return void 0===e?d([]):void this.getFirstAdjacentById(e,b,c,d)},i.prototype.getFirstAdjacentById=function(a,b,c,d){var e=this;if(!this.cirHeader)return void this.bwg.data.slice(this.cirTreeOffset,48).fetch(function(f){e.cirHeader=f;var g=new Int32Array(e.cirHeader);e.cirBlockSize=g[1],e.getFirstAdjacentById(a,b,c,d)});var f=null,h=-1,i=-1,j=0,k=(Date.now(),function(a,b){j+=a.length;for(var c,d=4+32*e.cirBlockSize,f=0;f0&&(0!=a||b>0)?e.getFirstAdjacentById(0,0,c,d):0>c&&(a!=e.bwg.maxID||1e9>b)?e.getFirstAdjacentById(e.bwg.maxID,1e9,c,d):d([]);e.fetchFeatures(function(d,e,f){return 0>c&&(a>d||b>f)||c>0&&(d>a||e>b)},[f],function(a){for(var b=null,e=-1,f=-1,g=0;gc&&(i>e||k>f)||c>0&&(e>i||f>j))&&(b=h,f=0>c?k:j,e=i)}return d(null!=b?[b]:[])})}})},o=function(d,j,l){var m=new Uint8Array(d),n=new Int16Array(d),o=new Int32Array(d),p=m[j],q=n[j/2+1];if(j+=4,0!=p)for(var r=0;q>r;++r){var s=j/4,t=o[s],u=o[s+1],v=o[s+2],w=o[s+3],x=g(m,j+16),y=g(m,j+24);(0>c&&(a>t||t==a&&b>=u)||c>0&&(v>a||v==a&&w>=b))&&(/_random/.exec(e.bwg.idsToChroms[t])||(null==f||0>c&&(v>h||v==h&&w>i)||c>0&&(h>t||t==h&&i>u))&&(f={offset:x,size:y},i=0>c?w:u,h=0>c?v:t)),j+=32}else{for(var z=-1,A=-1,B=-1,r=0;q>r;++r){var s=j/4,t=o[s],u=o[s+1],v=o[s+2],w=o[s+3],x=o[s+4]<<32|o[s+5];(0>c&&(a>t||t==a&&b>=u)&&v>=a||c>0&&(v>a||v==a&&w>=b)&&a>=t)&&(0>z||w>A)&&(z=x,A=0>c?w:u,B=0>c?v:t),j+=24}z>=0&&k([z],l+1)}};k([e.cirTreeOffset+48],1)},h.prototype.readWigData=function(a,b,c){var d,e=25e3,f=c-b;if(e>=f||0===this.zoomLevels.length)d=this.getUnzoomedView(),console.log("zoomLevel unzoomed");else for(var g=0;g=this.zoomLevels.length-1)){var g;return g=0>a?this.getUnzoomedView():this.getZoomedView(a),g.readWigDataById(b,c,d,e)}if(this.topLevelReductionCache){for(var h=[],i=this.topLevelReductionCache,j=0;j0?0:3e8;a.fromRef&&(h=b);for(var j=0;j0){if(k>d)if(a.zoom<0){if(l.min>h)return e(l)}else l.max>h&&i.push({chr:a.chr,chrOrd:a.chrOrd,zoom:a.zoom-2,min:l.min,max:l.max,fromRef:a.fromRef})}else if(k>d)if(a.zoom<0){if(l.maxc?-1:1;for(var g=this,h=this.chromsToIDs[a],i=[{chrOrd:0,chr:h,zoom:g.zoomLevels.length-4,min:0,max:3e8,fromRef:!0}],j=1;j<=this.maxID+1;++j){var k=(h+c*j)%(this.maxID+1);0>k&&(k+=this.maxID+1),i.push({chrOrd:j,chr:k,zoom:g.zoomLevels.length-1,min:0,max:3e8})}f()},h.prototype.getAutoSQL=function(a){return this.asOffset?void $.when(f(this.url,this.asOffset,2048)).then(function(b){for(var c=new Uint8Array(b),d="",e=0;ei;++i){var j=e[10*i],l=e[10*i+1],m=g(d,20*i+4),n=e[10*i+8],o=new k(b,j,l,m,n);h.push(o)}a(h)})})},k.prototype.lookup=function(a,b){var c=this;this.bbi.data.slice(this.offset,32).fetch(function(d){function f(d){c.bbi.data.slice(d,4+j*(k+l)).fetch(function(d){var h=new Uint8Array(d),i=new Uint16Array(d),j=(new Uint32Array(d),h[0]),m=i[1],n=4;if(0!=j){for(var o=0;m>o;++o){for(var p="",q=0;k>q;++q){var r=h[n++];0!=r&&(p+=String.fromCharCode(r))}if(p==a){var s=g(h,n),t=e(h,n+8);return c.bbi.getUnzoomedView().fetchFeatures(function(b,d,e,f){return f&&f.length>c.field-3?f[c.field-3]==a:void 0},[{offset:s,size:t}],b)}n+=l}return b([])}for(var u=null,o=0;m>o;++o){for(var p="",q=0;k>q;++q){var r=h[n++];0!=r&&(p+=String.fromCharCode(r))}var v=g(h,n);if(n+=8,a.localeCompare(p)<0&&u)return void f(u);u=v}f(u)})}var h=new Uint8Array(d),i=(new Int16Array(d),new Int32Array(d)),j=(i[0],i[1]),k=i[2],l=i[3],m=(g(h,16),32);f(c.offset+m)})},{makeBwg:j}}); +//# sourceMappingURL=../../../maps/libs/bbi/bigwig.js.map \ No newline at end of file diff --git a/static/scripts/libs/bbi/jquery-ajax-native.js b/static/scripts/libs/bbi/jquery-ajax-native.js new file mode 100644 index 00000000000..18f54b80f50 --- /dev/null +++ b/static/scripts/libs/bbi/jquery-ajax-native.js @@ -0,0 +1,2 @@ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){var b=a.ajaxSettings;b.responseFields.native="responseNative",b.converters["* native"]=!0;var c={},d=0,e={0:200,1223:204},f={},g=jQuery.ajaxSettings.xhr();window.ActiveXObject&&a(window).on("unload",function(){for(var a in f)f[a]()}),c.cors=!!g&&"withCredentials"in g,c.ajax=g=!!g,a.ajaxTransport("native",function(a){var b;return c.cors||g&&!a.crossDomain?{send:function(c,g){var h,i=a.xhr(),j=++d,k={};if(i.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(h in a.xhrFields)i[h]=a.xhrFields[h];a.mimeType&&i.overrideMimeType&&i.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(h in c)i.setRequestHeader(h,c[h]);b=function(a){return function(){b&&(delete f[j],b=i.onload=i.onerror=null,"abort"===a?i.abort():"error"===a?g(i.status,i.statusText):(i.response&&(k.native=i.response),g(e[i.status]||i.status,i.statusText,k,i.getAllResponseHeaders())))}},i.onload=b(),i.onerror=b("error"),b=f[j]=b("abort");try{i.send(a.hasContent&&a.data||null)}catch(l){if(b)throw l}},abort:function(){b&&b()}}:void 0}),a.getNative=function(b,c){return a.ajax({dataType:"native",url:b,xhrFields:{responseType:"arraybuffer"},success:c})}}); +//# sourceMappingURL=../../../maps/libs/bbi/jquery-ajax-native.js.map \ No newline at end of file diff --git a/static/scripts/libs/bbi/jszlib.js b/static/scripts/libs/bbi/jszlib.js new file mode 100644 index 00000000000..c208fb5d5c5 --- /dev/null +++ b/static/scripts/libs/bbi/jszlib.js @@ -0,0 +1,2 @@ +define([],function(){function a(){}function b(){this.was=[0]}function c(a,b,c){this.hufts=new Int32Array(3*m),this.window=new Uint8Array(c),this.end=c,this.checkfn=b,this.mode=O,this.reset(a,null),this.left=0,this.table=0,this.index=0,this.blens=null,this.bb=new Int32Array(1),this.tb=new Int32Array(1),this.codes=new d,this.last=0,this.bitk=0,this.bitb=0,this.read=0,this.write=0,this.check=0,this.inftree=new e}function d(){}function e(){}function f(a,b,c,d){return a[0]=Y,b[0]=Z,c[0]=$,d[0]=_,s}function g(a,b,c,d,e){if(0!=e){if(!a)throw"Undef src";if(!c)throw"Undef dest";0==b&&e==a.length?i(a,c,d):ra?i(a.subarray(b,b+e),c,d):1==a.BYTES_PER_ELEMENT&&e>100?i(new Uint8Array(a.buffer,a.byteOffset+b,e),c,d):h(a,b,c,d,e)}}function h(a,b,c,d,e){for(var f=0;e>f;++f)c[d+f]=a[b+f]}function i(a,b,c){b.set(a,c)}function j(b,c,d,e){b=c?d?new Uint8Array(b,c,d):new Uint8Array(b,c,b.byteLength-c):new Uint8Array(b);var f=new a;f.inflateInit(l,!0),f.next_in=b,f.next_in_index=0,f.avail_in=b.length;for(var h=[],i=0;;){var j=new Uint8Array(32e3);f.next_out=j,f.next_out_index=0,f.avail_out=j.length;var k=f.inflate(p);if(k!=s&&k!=t&&k!=y)throw f.msg;if(0!=f.avail_out){var m=new Uint8Array(j.length-f.avail_out);g(j,0,m,0,j.length-f.avail_out),j=m}if(h.push(j),i+=j.length,k==t||k==y)break}if(e&&(e[0]=(c||0)+f.next_in_index),1==h.length)return h[0].buffer;for(var n=new Uint8Array(i),o=0,q=0;qb&&(b=-b,nowrap=1),8>b||b>15?(this.inflateEnd(a),v):(this.wbits=b,a.istate.blocks=new c(a,0!=a.istate.nowrap?null:this,1<>4)+8>a.istate.wbits){a.istate.mode=M,a.msg="invalid window size",a.istate.marker=5;break}a.istate.mode=A;case A:if(0==a.avail_in)return c;if(c=b,a.avail_in--,a.total_in++,d=255&a.next_in[a.next_in_index++],((a.istate.method<<8)+d)%31!=0){a.istate.mode=M,a.msg="incorrect header check",a.istate.marker=5;break}if(0==(d&o)){a.istate.mode=G;break}a.istate.mode=B;case B:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need=(255&a.next_in[a.next_in_index++])<<24&4278190080,a.istate.mode=C;case C:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need+=(255&a.next_in[a.next_in_index++])<<16&16711680,a.istate.mode=D;case D:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need+=(255&a.next_in[a.next_in_index++])<<8&65280,a.istate.mode=E;case E:return 0==a.avail_in?c:(c=b,a.avail_in--,a.total_in++,a.istate.need+=255&a.next_in[a.next_in_index++],a.adler=a.istate.need,a.istate.mode=F,u);case F:return a.istate.mode=M,a.msg="need dictionary",a.istate.marker=0,v;case G:if(c=a.istate.blocks.proc(a,c),c==w){a.istate.mode=M,a.istate.marker=0;break}if(c==s&&(c=b),c!=t)return c;if(c=b,a.istate.blocks.reset(a,a.istate.was),0!=a.istate.nowrap){a.istate.mode=L;break}a.istate.mode=H;case H:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need=(255&a.next_in[a.next_in_index++])<<24&4278190080,a.istate.mode=I;case I:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need+=(255&a.next_in[a.next_in_index++])<<16&16711680,a.istate.mode=J;case J:if(0==a.avail_in)return c;c=b,a.avail_in--,a.total_in++,a.istate.need+=(255&a.next_in[a.next_in_index++])<<8&65280,a.istate.mode=K;case K:if(0==a.avail_in)return c;if(c=b,a.avail_in--,a.total_in++,a.istate.need+=255&a.next_in[a.next_in_index++],a.istate.was[0]!=a.istate.need){a.istate.mode=M,a.msg="incorrect data check",a.istate.marker=5;break}a.istate.mode=L;case L:return t;case M:return w;default:return v}},b.prototype.inflateSetDictionary=function(a,b,c){var d=0,e=c;return null==a||null==a.istate||a.istate.mode!=F?v:a._adler.adler32(1,b,0,c)!=a.adler?w:(a.adler=a._adler.adler32(0,null,0,0),e>=1<d;)a.next_in[c]==ea[d]?d++:d=0!=a.next_in[c]?0:4-d,c++,b--;return a.total_in+=c-a.next_in_index,a.next_in_index=c,a.avail_in=b,a.istate.marker=d,4!=d?w:(e=a.total_in,f=a.total_out,this.inflateReset(a),a.total_in=e,a.total_out=f,a.istate.mode=G,s)},b.prototype.inflateSyncPoint=function(a){return null==a||null==a.istate||null==a.istate.blocks?v:a.istate.blocks.sync_point()};var fa=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];c.prototype.reset=function(a,b){b&&(b[0]=this.check),this.mode==U&&this.codes.free(a),this.mode=O,this.bitk=0,this.bitb=0,this.read=this.write=0,this.checkfn&&(a.adler=this.check=a._adler.adler32(0,null,0,0))},c.prototype.proc=function(a,b){var c,d,e,h,i,j,k;for(h=a.next_in_index,i=a.avail_in,d=this.bitb,e=this.bitk,j=this.write,k=je;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<>>1){case 0:d>>>=3,e-=3,c=7&e,d>>>=c,e-=c,this.mode=P;break;case 1:var l=new Int32Array(1),m=new Int32Array(1),n=[],o=[];f(l,m,n,o,a),this.codes.init(l[0],m[0],n[0],0,o[0],0,a),d>>>=3,e-=3,this.mode=U;break;case 2:d>>>=3,e-=3,this.mode=R;break;case 3:return d>>>=3,e-=3,this.mode=M,a.msg="invalid block type",b=w,this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b)}break;case P:for(;32>e;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<>>16&65535)!=(65535&d))return this.mode=M,a.msg="invalid stored block lengths",b=w,this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);this.left=65535&d,d=e=0,this.mode=0!=this.left?Q:0!=this.last?V:O;break;case Q:if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,write=j,this.inflate_flush(a,b);if(0==k&&(j==end&&0!=read&&(j=0,k=ji&&(c=i),c>k&&(c=k),g(a.next_in,h,this.window,j,c),h+=c,i-=c,j+=c,k-=c,0!=(this.left-=c))break;this.mode=0!=this.last?V:O;break;case R:for(;14>e;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<29||(c>>5&31)>29)return this.mode=X,a.msg="too many length or distance symbols",b=w,this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);if(c=258+(31&c)+(c>>5&31),null==this.blens||this.blens.lengthp;p++)this.blens[p]=0;d>>>=14,e-=14,this.index=0,mode=S;case S:for(;this.index<4+(this.table>>>10);){for(;3>e;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<>>=3,e-=3}for(;this.index<19;)this.blens[fa[this.index++]]=0;if(this.bb[0]=7,c=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,a),c!=s)return b=c,b==w&&(this.blens=null,this.mode=X),this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,write=j,this.inflate_flush(a,b);this.index=0,this.mode=T;case T:for(;;){if(c=this.table,!(this.index<258+(31&c)+(c>>5&31)))break;var p,q,r;for(c=this.bb[0];c>e;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<r)d>>>=c,e-=c,this.blens[this.index++]=r;else{for(p=18==r?7:r-14,q=18==r?11:3;c+p>e;){if(0==i)return this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);b=s,i--,d|=(255&a.next_in[h++])<>>=c,e-=c,q+=d&N[p],d>>>=p,e-=p,p=this.index,c=this.table,p+q>258+(31&c)+(c>>5&31)||16==r&&1>p)return this.blens=null,this.mode=X,a.msg="invalid bit length repeat",b=w,this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);r=16==r?this.blens[p-1]:0;do this.blens[p++]=r;while(0!=--q);this.index=p}}this.tb[0]=-1;var l=new Int32Array(1),m=new Int32Array(1),n=new Int32Array(1),o=new Int32Array(1);if(l[0]=9,m[0]=6,c=this.table,c=this.inftree.inflate_trees_dynamic(257+(31&c),1+(c>>5&31),this.blens,l,m,n,o,this.hufts,a),c!=s)return c==w&&(this.blens=null,this.mode=M),b=c,this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,this.inflate_flush(a,b);this.codes.init(l[0],m[0],this.hufts,n[0],this.hufts,o[0],a),this.mode=U;case U:if(this.bitb=d,this.bitk=e,a.avail_in=i,a.total_in+=h-a.next_in_index,a.next_in_index=h,this.write=j,(b=this.codes.proc(this,a,b))!=t)return this.inflate_flush(a,b);if(b=s,this.codes.free(a),h=a.next_in_index,i=a.avail_in,d=this.bitb,e=this.bitk,j=this.write,k=ja.avail_out&&(c=a.avail_out),0!=c&&b==y&&(b=s),a.avail_out-=c,a.total_out+=c,null!=this.checkfn&&(a.adler=this.check=a._adler.adler32(this.check,this.window,e,c)),g(this.window,e,a.next_out,d,c),d+=c,e+=c,e==this.end&&(e=0,this.write==this.end&&(this.write=0),c=this.write-e,c>a.avail_out&&(c=a.avail_out),0!=c&&b==y&&(b=s),a.avail_out-=c,a.total_out+=c,null!=this.checkfn&&(a.adler=this.check=a._adler.adler32(this.check,this.window,e,c)),g(this.window,e,a.next_out,d,c),d+=c,e+=c),a.next_out_index=d,this.read=e,b};var ga=0,ha=1,ia=2,ja=3,ka=4,la=5,ma=6,na=7,oa=8,pa=9;d.prototype.init=function(a,b,c,d,e,f){this.mode=ga,this.lbits=a,this.dbits=b,this.ltree=c,this.ltree_index=d,this.dtree=e,this.dtree_index=f,this.tree=null},d.prototype.proc=function(a,b,c){var d,e,f,g,h,i,j,k=0,l=0,m=0;for(m=b.next_in_index,g=b.avail_in,k=a.bitb,l=a.bitk,h=a.write,i=h=258&&g>=10&&(a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,c=this.inflate_fast(this.lbits,this.dbits,this.ltree,this.ltree_index,this.dtree,this.dtree_index,a,b),m=b.next_in_index,g=b.avail_in,k=a.bitb,l=a.bitk,h=a.write,i=hl;){if(0==g)return a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);c=s,g--,k|=(255&b.next_in[m++])<>>=this.tree[e+1],l-=this.tree[e+1],f=this.tree[e],0==f){this.lit=this.tree[e+2],this.mode=ma;break}if(0!=(16&f)){this.get=15&f,this.len=this.tree[e+2],this.mode=ia;break}if(0==(64&f)){this.need=f,this.tree_index=e/3+this.tree[e+2];break}if(0!=(32&f)){this.mode=na;break}return this.mode=pa,b.msg="invalid literal/length code",c=w,a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);case ia:for(d=this.get;d>l;){if(0==g)return a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);c=s,g--,k|=(255&b.next_in[m++])<>=d,l-=d,this.need=this.dbits,this.tree=this.dtree,this.tree_index=this.dtree_index,this.mode=ja;case ja:for(d=this.need;d>l;){if(0==g)return a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);c=s,g--,k|=(255&b.next_in[m++])<>=this.tree[e+1],l-=this.tree[e+1],f=this.tree[e],0!=(16&f)){this.get=15&f,this.dist=this.tree[e+2],this.mode=ka;break}if(0==(64&f)){this.need=f,this.tree_index=e/3+this.tree[e+2];break}return this.mode=pa,b.msg="invalid distance code",c=w,a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);case ka:for(d=this.get;d>l;){if(0==g)return a.bitb=k,a.bitk=l,b.avail_in=g,b.total_in+=m-b.next_in_index,b.next_in_index=m,a.write=h,a.inflate_flush(b,c);c=s,g--,k|=(255&b.next_in[m++])<>=d,l-=d,this.mode=la;case la:for(j=h-this.dist;0>j;)j+=a.end;for(;0!=this.len;){if(0==i&&(h==a.end&&0!=a.read&&(h=0,i=h7&&(l-=8,g++,m--),a.write=h,c=a.inflate_flush(b,c),h=a.write,i=ho;)q--,n|=(255&i.next_in[p++])<>=k[B+1],o-=k[B+1],0!=(16&m)){for(m&=15,y=k[B+2]+(n&N[m]),n>>=m,o-=m;15>o;)q--,n|=(255&i.next_in[p++])<>=k[B+1],o-=k[B+1],0!=(16&m)){for(m&=15;m>o;)q--,n|=(255&i.next_in[p++])<>=m,o-=m,u-=y,r>=z)A=r-z,r-A>0&&2>r-A?(h.window[r++]=h.window[A++],h.window[r++]=h.window[A++],y-=2):(h.window[r++]=h.window[A++],h.window[r++]=h.window[A++],y-=2);else{A=r-z;do A+=h.end;while(0>A);if(m=h.end-A,y>m){if(y-=m,r-A>0&&m>r-A){do h.window[r++]=h.window[A++];while(0!=--m)}else g(h.window,A,h.window,r,m),r+=m,A+=m,m=0;A=0}}do h.window[r++]=h.window[A++];while(0!=--y);break}if(0!=(64&m))return i.msg="invalid distance code",y=i.avail_in-q,y=y>o>>3?o>>3:y,q+=y,p-=y,o-=y<<3,h.bitb=n,h.bitk=o,i.avail_in=q,i.total_in+=p-i.next_in_index,i.next_in_index=p,h.write=r,w;j+=k[B+2],j+=n&N[m],B=3*(l+j),m=k[B]}break}if(0!=(64&m))return 0!=(32&m)?(y=i.avail_in-q,y=y>o>>3?o>>3:y,q+=y,p-=y,o-=y<<3,h.bitb=n,h.bitk=o,i.avail_in=q,i.total_in+=p-i.next_in_index,i.next_in_index=p,h.write=r,t):(i.msg="invalid literal/length code",y=i.avail_in-q,y=y>o>>3?o>>3:y,q+=y,p-=y,o-=y<<3,h.bitb=n,h.bitk=o,i.avail_in=q,i.total_in+=p-i.next_in_index,i.next_in_index=p,h.write=r,w);if(j+=k[B+2],j+=n&N[m],B=3*(l+j),0==(m=k[B])){n>>=k[B+1],o-=k[B+1],h.window[r++]=k[B+2],u--;break}}else n>>=k[B+1],o-=k[B+1],h.window[r++]=k[B+2],u--}while(u>=258&&q>=10);return y=i.avail_in-q,y=y>o>>3?o>>3:y,q+=y,p-=y,o-=y<<3,h.bitb=n,h.bitk=o,i.avail_in=q,i.total_in+=p-i.next_in_index,i.next_in_index=p,h.write=r,s},e.prototype.huft_build=function(a,b,c,d,e,f,h,i,j,k,l){var o,p,q,r,t,u,v,x,z,A,B,C,D,E,F;A=0,t=c;do this.c[a[b+A]]++,A++,t--;while(0!=t);if(this.c[0]==c)return h[0]=-1,i[0]=0,s;for(x=i[0],u=1;n>=u&&0==this.c[u];u++);for(v=u,u>x&&(x=u),t=n;0!=t&&0==this.c[t];t--);for(q=t,x>t&&(x=t),i[0]=x,E=1<u;u++,E<<=1)if((E-=this.c[u])<0)return w;if((E-=this.c[t])<0)return w;for(this.c[t]+=E,this.x[1]=u=0,A=1,D=2;0!=--t;)this.x[D]=u+=this.c[A],D++,A++;t=0,A=0;do 0!=(u=a[b+A])&&(this.v[this.x[u]++]=t),A++;while(++t=v;v++)for(o=this.c[v];0!=o--;){for(;v>C+x;){if(r++,C+=x,F=q-C,F=F>x?x:F,(p=1<<(u=v-C))>o+1&&(p-=o+1,D=v,F>u))for(;++um)return w;this.u[r]=B=this.hn[0],this.hn[0]+=F,0!=r?(this.x[r]=t,this.r[0]=u,this.r[1]=x,u=t>>>C-x,this.r[2]=B-this.u[r-1]-u,g(this.r,0,j,3*(this.u[r-1]+u),3)):h[0]=B}for(this.r[1]=v-C,A>=c?this.r[0]=192:l[A]>>C;F>u;u+=p)g(this.r,0,j,3*(B+u),3);for(u=1<>>=1)t^=u;for(t^=u,z=(1<257?(j==w?i.msg="oversubscribed distance tree":j==y?(i.msg="incomplete distance tree",j=w):j!=x&&(i.msg="empty distance tree with lengths",j=w),j):s)},e.prototype.initWorkArea=function(a){null==this.hn&&(this.hn=new Int32Array(1),this.v=new Int32Array(a),this.c=new Int32Array(n+1),this.r=new Int32Array(3),this.u=new Int32Array(n),this.x=new Int32Array(n+1)),this.v.lengthb;b++)this.v[b]=0;for(var b=0;n+1>b;b++)this.c[b]=0;for(var b=0;3>b;b++)this.r[b]=0;g(this.c,0,this.u,0,n),g(this.c,0,this.x,0,n+1)};var qa=new Uint8Array(1),ra="function"==typeof qa.subarray;return{inflateBuffer:j,arrayCopy:g}}); +//# sourceMappingURL=../../../maps/libs/bbi/jszlib.js.map \ No newline at end of file diff --git a/static/scripts/libs/bbi/spans.js b/static/scripts/libs/bbi/spans.js new file mode 100644 index 00000000000..0fcb9024e26 --- /dev/null +++ b/static/scripts/libs/bbi/spans.js @@ -0,0 +1,2 @@ +define([],function(){"use strict";function a(a,b){if("number"!=typeof a||"number"!=typeof b)throw"Bad range "+a+","+b;this._min=a,this._max=b}function b(a){var b=a.sort(g),c=[],d=b.shift();b.forEach(function(a){a._min<=d._max?a._max>d._max&&(d._max=a._max):(c.push(d),d=a)}),c.push(d),this._ranges=c}function c(a,c){return a instanceof b||(a instanceof Array||(a=[a]),a=new b(a)),c&&a.insertRange(c),a}function d(c,d){for(var e=c.ranges(),f=d.ranges(),g=e.length,h=f.length,i=0,j=0,k=[];g>i&&h>j;){var c=e[i],d=f[j],l=Math.max(c.min(),d.min()),m=Math.min(c.max(),d.max());m>=l&&k.push(new a(l,m)),c.max()>d.max()?++j:++i}return 0==k.length?null:1==k.length?k[0]:new b(k)}function e(a){for(var b=0,c=a.ranges(),d=0;db.min()?1:a.max()a.max()?1:0}function g(a,b){return a._minb._min?1:a._maxa._max?1:0}return a.prototype.min=function(){return this._min},a.prototype.max=function(){return this._max},a.prototype.contains=function(a){return a>=this._min&&a<=this._max},a.prototype.isContiguous=function(){return!0},a.prototype.ranges=function(){return[this]},a.prototype._pushRanges=function(a){a.push(this)},a.prototype.toString=function(){return"["+this._min+"-"+this._max+"]"},b.prototype.min=function(){return this._ranges[0].min()},b.prototype.max=function(){return this._ranges[this._ranges.length-1].max()},b.prototype.lower_bound=function(a){var b=this.ranges();if(a>this.max())return b.length;if(a=c;){var e=Math.floor((c+d)/2);if(a>b[e]._max)c=e+1;else{if(!(aa._max&&(a._max=c[d]._max),this._ranges.splice(b,d-b+1,a)},b.prototype.isContiguous=function(){return this._ranges.length>1},b.prototype.ranges=function(){return this._ranges},b.prototype._pushRanges=function(a){for(var b=0;b0&&(a+=","),a+=this._ranges[b].toString();return a},{Range:a,union:c,intersection:d,coverage:e,rangeOver:f,_rangeOrder:g}}); +//# sourceMappingURL=../../../maps/libs/bbi/spans.js.map \ No newline at end of file diff --git a/static/scripts/viz/bbi-data-manager.js b/static/scripts/viz/bbi-data-manager.js new file mode 100644 index 00000000000..f3e9ee28f4e --- /dev/null +++ b/static/scripts/viz/bbi-data-manager.js @@ -0,0 +1,2 @@ +define(["viz/visualization","libs/bbi/bigwig"],function(a,b){var c=a.GenomeDataManager.extend({load_data:function(a){var c=$.Deferred();this.set_data(a,c);{var d=galaxy_config.root+"datasets/"+this.get("dataset").id+"/display",e=this;new $.Deferred}return $.when(b.makeBwg(d)).then(function(b){$.when(b.readWigData(a.get("chrom"),a.get("start"),a.get("end"))).then(function(b){var d=[];b.forEach(function(a){d.push([a.min,a.score]),a.min!==a.max&&d.push([a.max,a.score])});var f={data:d,region:a,dataset_type:"bigwig"};e.set_data(a,f),c.resolve(f)})}),c}});return{BBIDataManager:c}}); +//# sourceMappingURL=../../maps/viz/bbi-data-manager.js.map \ No newline at end of file diff --git a/static/scripts/viz/trackster/tracks.js b/static/scripts/viz/trackster/tracks.js index 3c47203d3ed..600ab98d317 100644 --- a/static/scripts/viz/trackster/tracks.js +++ b/static/scripts/viz/trackster/tracks.js @@ -1,4 +1,4 @@ -define(["libs/underscore","viz/visualization","viz/viz_views","viz/trackster/util","viz/trackster/slotting","viz/trackster/painters","viz/trackster/filters","mvc/dataset/data","mvc/tool/tools","utils/config","ui/editable-text"],function(a,b,c,d,e,f,g,h,i,j){function k(a,b){b||(b=0);var c=Math.pow(10,b);return Math.round(a*c)/c}var l=a.extend,m={},n=function(a,b){m[a.attr("id")]=b},o=function(a,b,c,d){c=".group",m[a.attr("id")]=d,a.bind("drag",{handle:"."+b,relative:!0},function(a,b){var d,e,f,g,h,i=($(this),$(this).parent()),j=i.children(".track,.group"),k=m[$(this).attr("id")];if(e=$(this).parents(c),0!==e.length){f=e.position().top,g=f+e.outerHeight();var l=m[e.attr("id")];if(b.offsetYg)return $(this).insertAfter(e),l.remove_drawable(k),void l.container.add_drawable(k)}for(e=null,h=0;h=f&&b.offsetY<=g)return b.offsetY-f0?h-1:h))}).bind("dragstart",function(){$(this).addClass("dragging")}).bind("dragend",function(){$(this).removeClass("dragging")})},p=20,q=100,r=12e3,s=400,t=5e3,u=100,v="Cannot display dataset due to an error. ",w="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",x="No data for this chrom/contig.",y="Preparing data. This can take a while for a large dataset. If the visualization is saved and closed, preparation will continue in the background.",z="Tool cannot be rerun: ",A="Ready for display",B=10,C=["Histogram","Line","Filled","Intensity"],D=function(a,b,d){if(D.id_counter||(D.id_counter=0),this.id=D.id_counter++,this.view=a,this.container=b,this.drag_handle_class=d.drag_handle_class,this.is_overview=!1,this.action_icons={},this.config=j.ConfigSettingCollection.from_models_and_saved_values(this.config_params,d.prefs),this.config.get_value("name")||this.config.set_value("name",d.name),this.config_onchange&&this.config.on("change",this.config_onchange,this),this.container_div=this.build_container_div(),this.header_div=null,d.header!==!1){var e=new c.TrackHeaderView({model:this,id:this.id});this.header_div=e.$el,this.container_div.append(this.header_div);var f=e.icons_div;this.action_icons=e.action_icons,this.container_div.hover(function(){f.show()},function(){f.hide()})}};D.prototype.action_icons_def=[{name:"toggle_icon",title:"Hide/show content",css_class:"toggle",on_click_fn:function(a){a.config.get_value("content_visible")?(a.action_icons.toggle_icon.addClass("toggle-expand").removeClass("toggle"),a.hide_contents(),a.config.set_value("content_visible",!1)):(a.action_icons.toggle_icon.addClass("toggle").removeClass("toggle-expand"),a.config.set_value("content_visible",!0),a.show_contents())}},{name:"settings_icon",title:"Edit settings",css_class:"gear",on_click_fn:function(a){var b=new j.ConfigSettingCollectionView({collection:a.config});b.render_in_modal("Configure Track")}},{name:"remove_icon",title:"Remove",css_class:"remove-icon",on_click_fn:function(a){$(".tooltip").remove(),a.remove()}}],l(D.prototype,{config_params:[{key:"name",label:"Name",type:"text",default_value:""},{key:"content_visible",type:"bool",default_value:!0,hidden:!0}],config_onchange:function(){},init:function(){},changed:function(){this.view.changed()},can_draw:function(){return this.enabled&&this.config.get_value("content_visible")?!0:!1},request_draw:function(){},_draw:function(){},to_dict:function(){},set_name:function(a){this.old_name=this.config.get_value("name"),this.config.set_value("name",a)},revert_name:function(){this.old_name&&this.config.set_value("name",this.old_name)},remove:function(){this.changed(),this.container.remove_drawable(this);var a=this.view;this.container_div.hide(0,function(){$(this).remove(),a.update_intro_div()})},build_container_div:function(){},update_icons:function(){},hide_contents:function(){},show_contents:function(){},get_drawables:function(){}});var E=function(a,b,c){D.call(this,a,b,c),this.obj_type=c.obj_type,this.drawables=[]};l(E.prototype,D.prototype,{unpack_drawables:function(a){this.drawables=[];for(var b,c=0;c").addClass("content-div").attr("id","group_"+this.id+"_content_div").appendTo(this.container_div),n(this.container_div,this),n(this.content_div,this),o(this.container_div,this.drag_handle_class,".group",this),this.filters_manager=new g.FiltersManager(this),this.header_div.after(this.filters_manager.parent_div),this.filters_manager.parent_div.after($("
")),this.saved_filters_managers=[],"drawables"in c&&this.unpack_drawables(c.drawables),"filters"in c){var d=this.filters_manager;this.filters_manager=new g.FiltersManager(this,c.filters),d.parent_div.replaceWith(this.filters_manager.parent_div),c.filters.visible&&this.setup_multitrack_filtering()}};l(F.prototype,D.prototype,E.prototype,{action_icons_def:[D.prototype.action_icons_def[0],D.prototype.action_icons_def[1],{name:"composite_icon",title:"Show composite track",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_composite_track()}},{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?(a.filters_manager.clear_filters(),a._restore_filter_managers()):(a.setup_multitrack_filtering(),a.request_draw({clear_tile_cache:!0})),a.filters_manager.toggle()}},D.prototype.action_icons_def[2]],build_container_div:function(){var a=$("
").addClass("group").attr("id","group_"+this.id);return this.container&&this.container.content_div.append(a),a},hide_contents:function(){this.tiles_div.hide()},show_contents:function(){this.tiles_div.show(),this.request_draw()},update_icons:function(){var a=this.drawables.length;if(0===a)this.action_icons.composite_icon.hide(),this.action_icons.filters_icon.hide();else if(1===a)this.action_icons.composite_icon.toggle(this.drawables[0]instanceof R),this.action_icons.filters_icon.hide();else{var b,c,d,e=!0,f=this.drawables[0].get_type(),h=0;for(b=0;a>b;b++){if(d=this.drawables[b],d.get_type()!==f){can_composite=!1;break}d instanceof V&&h++}if(e&&this.drawables[0]instanceof T?this.action_icons.composite_icon.show():(this.action_icons.composite_icon.hide(),$(".tooltip").remove()),h>1&&h===this.drawables.length){var i,j={};for(d=this.drawables[0],c=0;c0)}else this.action_icons.filters_icon.hide()}},_restore_filter_managers:function(){for(var a=0;a0){this.saved_filters_managers=[];for(var a=0;a").addClass("top-container").appendTo(c),this.browser_content_div=$("
").addClass("content").appendTo(c),this.bottom_container=$("
").addClass("bottom-container").appendTo(c),this.top_labeltrack=$("
").addClass("top-labeltrack").appendTo(this.top_container),this.viewport_container=$("
").addClass("viewport-container").attr("id","viewport-container").appendTo(this.browser_content_div),this.content_div=this.viewport_container,n(this.viewport_container,d),this.intro_div=$("
").addClass("intro").appendTo(this.viewport_container);$("
").text("Add Datasets to Visualization").addClass("action-button").appendTo(this.intro_div).click(function(){b.select_datasets(Galaxy.root+"visualization/list_current_history_datasets",Galaxy.root+"api/datasets",{"f-dbkey":d.dbkey},function(b){a.each(b,function(a){d.add_drawable(Z(a,d,d))})})});this.nav_container=$("
").addClass("trackster-nav-container").prependTo(this.top_container),this.nav=$("
").addClass("trackster-nav").appendTo(this.nav_container),this.stand_alone&&(this.nav_container.addClass("stand-alone"),this.nav.addClass("stand-alone")),this.overview=$("
").addClass("overview").appendTo(this.bottom_container),this.overview_viewport=$("
").addClass("overview-viewport").appendTo(this.overview),this.overview_close=$("").attr("title","Close overview").addClass("icon-button overview-close tooltip").hide().appendTo(this.overview_viewport),this.overview_highlight=$("
").addClass("overview-highlight").hide().appendTo(this.overview_viewport),this.overview_box_background=$("
").addClass("overview-boxback").appendTo(this.overview_viewport),this.overview_box=$("
").addClass("overview-box").appendTo(this.overview_viewport),this.default_overview_height=this.overview_box.height(),this.nav_controls=$("
").addClass("nav-controls").appendTo(this.nav),this.chrom_select=$("").addClass("nav-input").hide().bind("keyup focusout",e).appendTo(this.nav_controls),this.location_span=$("").addClass("location").attr("title","Click to change location").tooltip({placement:"bottom"}).appendTo(this.nav_controls),this.location_span.click(function(){d.location_span.hide(),d.chrom_select.hide(),d.nav_input.val(d.chrom+":"+d.low+"-"+d.high),d.nav_input.css("display","inline-block"),d.nav_input.select(),d.nav_input.focus(),d.nav_input.autocomplete({source:function(a,b){var c=[],e=$.map(d.get_tracks(V),function(b){return b.data_manager.search_features(a.term).success(function(a){c=c.concat(a)})});$.when.apply($,e).done(function(){b($.map(c,function(a){return{label:a[0],value:a[1]}}))})},minLength:2})}),void 0!==this.vis_id&&(this.hidden_input=$("").attr("type","hidden").val(this.vis_id).appendTo(this.nav_controls)),this.zo_link=$("").attr("id","zoom-out").attr("title","Zoom out").tooltip({placement:"bottom"}).click(function(){d.zoom_out()}).appendTo(this.nav_controls),this.zi_link=$("").attr("id","zoom-in").attr("title","Zoom in").tooltip({placement:"bottom"}).click(function(){d.zoom_in()}).appendTo(this.nav_controls),this.load_chroms_deferred=this.load_chroms({low:0}),this.chrom_select.bind("change",function(){d.change_chrom(d.chrom_select.val())}),this.browser_content_div.click(function(){$(this).find("input").trigger("blur")}),this.browser_content_div.bind("dblclick",function(a){d.zoom_in(a.pageX,this.viewport_container)}),this.overview_box.bind("dragstart",function(a,b){this.current_x=b.offsetX}).bind("drag",function(a,b){var c=b.offsetX-this.current_x;this.current_x=b.offsetX;var e=Math.round(c/d.viewport_container.width()*(d.max_high-d.max_low));d.move_delta(-e)}),this.overview_close.click(function(){d.reset_overview()}),this.viewport_container.bind("draginit",function(a){return a.clientX>d.viewport_container.width()-16?!1:void 0}).bind("dragstart",function(a,b){b.original_low=d.low,b.current_height=a.clientY,b.current_x=b.offsetX}).bind("drag",function(a,b){var c=$(this),e=b.offsetX-b.current_x,f=c.scrollTop()-(a.clientY-b.current_height);c.scrollTop(f),b.current_height=a.clientY,b.current_x=b.offsetX;var g=Math.round(e/d.viewport_container.width()*(d.high-d.low));d.move_delta(g)}),this.top_labeltrack.bind("dragstart",function(){return $("
").addClass("zoom-area").css("height",d.browser_content_div.height()+d.top_labeltrack.height()+1).appendTo($(this))}).bind("drag",function(a,b){$(b.proxy).css({left:Math.min(a.pageX,b.startX)-d.container.offset().left,width:Math.abs(a.pageX-b.startX)});var c=Math.min(a.pageX,b.startX)-d.container.offset().left,e=Math.max(a.pageX,b.startX)-d.container.offset().left,f=d.high-d.low,g=d.viewport_container.width();d.update_location(Math.round(c/g*f)+d.low,Math.round(e/g*f)+d.low)}).bind("dragend",function(a,b){var c=Math.min(a.pageX,b.startX),e=Math.max(a.pageX,b.startX),f=d.high-d.low,g=d.viewport_container.width(),h=d.low;d.low=Math.round(c/g*f)+h,d.high=Math.round(e/g*f)+h,$(b.proxy).remove(),d.request_redraw()}),this.add_label_track(new Q(this,{content_div:this.top_labeltrack})),$(window).bind("resize",function(){this.resize_timer&&clearTimeout(this.resize_timer),this.resize_timer=setTimeout(function(){d.resize_window()},500)}),$(document).bind("redraw",function(){d.redraw()}),this.reset(),$(window).trigger("resize")},get_base_color:function(a){return this.config.get_value(a.toLowerCase()+"_color")||this.config.get_value("n_color")}});l(G.prototype,E.prototype,{changed:function(){this.has_changes=!0},update_intro_div:function(){this.intro_div.toggle(0===this.drawables.length)},trigger_navigate:function(a,b,c,d){if(this.timer&&clearTimeout(this.timer),d){var e=this;this.timer=setTimeout(function(){e.trigger("navigate",a+":"+b+"-"+c)},500)}else view.trigger("navigate",a+":"+b+"-"+c)},update_location:function(a,b){this.location_span.text(d.commatize(a)+" - "+d.commatize(b)),this.nav_input.val(this.chrom+":"+d.commatize(a)+"-"+d.commatize(b));var c=this.chrom_select.val();""!==c&&this.trigger_navigate(c,this.low,this.high,!0)},load_chroms:function(a){a.num=u;var b=this,c=$.Deferred();return $.ajax({url:Galaxy.root+"api/genomes/"+this.dbkey,data:a,dataType:"json",success:function(a){if(0!==a.chrom_info.length){if(a.reference){var d=new S(b);b.add_label_track(d),b.reference_track=d}b.chrom_data=a.chrom_info;for(var e='',f=0,g=b.chrom_data.length;g>f;f++){var h=b.chrom_data[f].chrom;e+='"}a.prev_chroms&&(e+='"),a.next_chroms&&(e+='"),b.chrom_select.html(e),b.chrom_start_index=a.start_index,c.resolve(a.chrom_info)}},error:function(){alert("Could not load chroms for this dbkey: "+b.dbkey)}}),c},change_chrom:function(a,b,c){var d=this;if(!d.chrom_data)return void d.load_chroms_deferred.then(function(){d.change_chrom(a,b,c)});if(a&&"None"!==a){if("previous"===a)return void d.load_chroms({low:this.chrom_start_index-u});if("next"===a)return void d.load_chroms({low:this.chrom_start_index+u});var e=$.grep(d.chrom_data,function(b){return b.chrom===a})[0];if(void 0===e)return void d.load_chroms({chrom:a},function(){d.change_chrom(a,b,c)});if(a!==d.chrom){d.chrom=a,d.chrom_select.val(d.chrom),d.max_high=e.len-1,d.reset();for(var f=0,g=d.drawables.length;g>f;f++){var h=d.drawables[f];h.init&&h.init()}d.reference_track&&d.reference_track.init()}void 0===b&&void 0===c?(d.low=0,d.high=d.max_high):(d.low=void 0!==b?Math.max(b,0):0,void 0===c?(d.low=Math.max(d.low-15,0),d.high=d.low+30):d.high=Math.min(c,d.max_high)),d.request_redraw()}},go_to:function(a){a=a.replace(/,/g,""),a=a.replace(/:|\-/g," ");var b=a.split(/\s+/),c=b[0],d=b[1]?parseInt(b[1],10):void 0,e=b[2]?parseInt(b[2],10):void 0;this.change_chrom(c,d,e)},move_fraction:function(a){var b=this,c=b.high-b.low;this.move_delta(a*c)},move_delta:function(a){var b=this,c=b.high-b.low;b.low-ab.max_high?(b.high=b.max_high,b.low=b.max_high-c):(b.high-=a,b.low-=a),b.request_redraw({data_fetch:!1}),this.redraw_on_move_fn&&clearTimeout(this.redraw_on_move_fn),this.redraw_on_move_fn=setTimeout(function(){b.request_redraw()},200);var d=b.chrom_select.val();this.trigger_navigate(d,b.low,b.high,!0)},add_drawable:function(a){E.prototype.add_drawable.call(this,a),a.init(),this.changed(),this.update_intro_div();var b=this;a.config.on("change",function(){b.changed()})},add_label_track:function(a){a.view=this,a.init(),this.label_tracks.push(a)},remove_drawable:function(a,b){if(E.prototype.remove_drawable.call(this,a),b){var c=this;a.container_div.hide(0,function(){$(this).remove(),c.update_intro_div()})}},reset:function(){this.low=this.max_low,this.high=this.max_high,this.viewport_container.find(".yaxislabel").remove()},request_redraw:function(b,c){var d=this,e=c?[c]:d.drawables;a.each(e,function(c){var e=a.find(d.tracks_to_be_redrawn,function(a){return a[0]===c});e?e[1]=b:d.tracks_to_be_redrawn.push([c,b])}),this.requested_redraw||(requestAnimationFrame(function(){d._redraw()}),this.requested_redraw=!0)},_redraw:function(){this.requested_redraw=!1;var b=this.low,c=this.high;bthis.max_high&&(c=this.max_high);var d=this.high-this.low;0!==this.high&&df&&this.overview_box.css("left",e-(g-f)/2),this.overview_highlight&&this.overview_highlight.css({left:e,width:f}),a.each(this.tracks_to_be_redrawn,function(a){var b=a[0],c=a[1];b&&b._draw(c)}),this.tracks_to_be_redrawn=[],a.each(this.label_tracks,function(a){a._draw()})},zoom_in:function(a){if(!(0===this.max_high||this.high-this.low<=this.min_separation)){var b=this.high-this.low,c=b/2+this.low,d=b/this.zoom_factor/2;a&&(c=a/this.viewport_container.width()*(this.high-this.low)+this.low),this.low=Math.round(c-d),this.high=Math.round(c+d),this.changed(),this.request_redraw()}},zoom_out:function(){if(0!==this.max_high){var a=this.high-this.low,b=a/2+this.low,c=a*this.zoom_factor/2;this.low=Math.round(b-c),this.high=Math.round(b+c),this.changed(),this.request_redraw()}},resize_viewport:function(){this.viewport_container.height(this.container.height()-this.top_container.height()-this.bottom_container.height())},resize_window:function(){this.resize_viewport(),this.request_redraw()},set_overview:function(a){if(this.overview_drawable){if(this.overview_drawable.dataset.id===a.dataset.id)return;this.overview_viewport.find(".track").remove()}var b=a.copy({content_div:this.overview_viewport}),c=this;b.header_div.hide(),b.is_overview=!0,c.overview_drawable=b,this.overview_drawable.postdraw_actions=function(){c.overview_highlight.show().height(c.overview_drawable.content_div.height()),c.overview_viewport.height(c.overview_drawable.content_div.height()+c.overview_box.outerHeight()),c.overview_close.show(),c.resize_window()},c.overview_drawable.request_draw(),this.changed()},reset_overview:function(){$(".tooltip").remove(),this.overview_viewport.find(".track-tile").remove(),this.overview_viewport.height(this.default_overview_height),this.overview_box.height(this.default_overview_height),this.overview_close.hide(),this.overview_highlight.hide(),view.resize_window(),view.overview_drawable=null}});var H=i.Tool.extend({defaults:{track:null},initialize:function(a){i.Tool.prototype.initialize.call(this,a);var b=!0;void 0!==a.tool_state&&void 0!==a.tool_state.hidden&&(b=a.tool_state.hidden),this.set("hidden",b),this.remove_inputs(["data","hidden_data","conditional"])},state_dict:function(){return a.extend(this.get_inputs_dict(),{hidden:!this.is_visible()})}}),I=Backbone.View.extend({events:{"change :input":"update_value"},render:function(){var a=this.$el.addClass("param-row"),b=this.model,c=($("
").addClass("param-label").text(b.get("label")).appendTo(a),$("
").addClass("param-input").html(b.get("html")).appendTo(a));c.find(":input").val(b.get("value")),$("
").appendTo(a)},update_value:function(a){this.model.set_value($(a.target).val())}}),J=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.set_visible,this)},render:function(){var a=this;tool=this.model,parent_div=this.$el.addClass("dynamic-tool").hide(),parent_div.bind("drag",function(a){a.stopPropagation()}).click(function(a){a.stopPropagation()}).bind("dblclick",function(a){a.stopPropagation()}).keydown(function(a){a.stopPropagation()});$("
").appendTo(parent_div).text(tool.get("name"));tool.get("inputs").each(function(a){var b=new I({model:a});b.render(),parent_div.append(b.$el)}),parent_div.find("input").click(function(){$(this).select()});var b=$("
").addClass("param-row").appendTo(parent_div),c=$("").attr("value","Run on complete dataset").appendTo(b),d=$("").attr("value","Run on visible region").appendTo(b);d.click(function(){a.run_on_region()}),c.click(function(){a.run_on_dataset()}),tool.is_visible()&&this.$el.show()},set_visible:function(){this.$el.toggle(this.model.is_visible())},update_params:function(){for(var a=0;a").append(d),this.data=e,this.stale=!1};L.prototype.predisplay_actions=function(){};var M=function(a,b,c,d,e){L.call(this,a,b,c,d,e)};M.prototype.predisplay_actions=function(){};var N=function(a,b,c,d,e,f,g,h,i,j,k){L.call(this,a,b,c,d,e),this.mode=f,this.all_slotted=h,this.feature_mapper=i,this.has_icons=!1,this.incomplete_features=j,this.other_tiles_features_drawn={},this.seq_data=k};l(N.prototype,L.prototype),N.prototype.predisplay_actions=function(){};var O=function(a,c,d){l(d,{drag_handle_class:"draghandle"}),D.call(this,a,c,d),this.dataset=null,d.dataset&&(this.dataset=d.dataset instanceof Backbone.Model?d.dataset:new h.Dataset(d.dataset)),this.dataset_check_type="converted_datasets_state",this.data_url_extra_params={},this.data_query_wait="data_query_wait"in d?d.data_query_wait:t,this.data_manager="data_manager"in d?d.data_manager:new b.GenomeDataManager({dataset:this.dataset,genome:new b.Genome({key:a.dbkey,chroms_info:{chrom_info:a.chrom_data}}),data_mode_compatible:this.data_and_mode_compatible,can_subset:this.can_subset}),this.min_height_px=16,this.max_height_px=800,this.visible_height_px=this.config.get_value("height"),this.content_div=$("
").appendTo(this.container_div),this.container&&(this.container.content_div.append(this.container_div),"resize"in d&&!d.resize||this.add_resize_handle())};l(O.prototype,D.prototype,{action_icons_def:[{name:"mode_icon",title:"Set display mode",css_class:"chevron-expand",on_click_fn:function(){}},D.prototype.action_icons_def[0],{name:"overview_icon",title:"Set as overview",css_class:"application-dock-270",on_click_fn:function(a){a.view.set_overview(a)}},D.prototype.action_icons_def[1],{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?a.filters_manager.clear_filters():a.filters_manager.init_filters(),a.filters_manager.toggle()}},{name:"tools_icon",title:"Tool",css_class:"hammer",on_click_fn:function(a){a.tool.toggle(),a.tool.is_visible()?a.set_name(a.config.get_value("name")+a.tool_region_and_parameters_str()):a.revert_name(),$(".tooltip").remove()}},{name:"param_space_viz_icon",title:"Tool parameter space visualization",css_class:"arrow-split",on_click_fn:function(c){var d="Tool:"+c.tool.get("name")+"
Dataset:"+c.config.get_value("name")+'
Region(s): ',e=function(){Galaxy.modal.hide(),$(window).unbind("keypress.check_enter_esc")},f=function(){var d,e=$('select[name="regions"] option:selected').val(),f=new b.GenomeRegion({chrom:view.chrom,start:view.low,end:view.high}),g=a.map($(".bookmark"),function(a){return new b.GenomeRegion({from_str:$(a).children(".position").text()})});d="cur"===e?[f]:"bookmarks"===e?g:[f].concat(g),Galaxy.modal.hide(),window.location.href=Galaxy.root+"visualization/sweepster?"+$.param({dataset_id:c.dataset.id,hda_ldda:c.dataset.get("hda_ldda"),regions:JSON.stringify(new Backbone.Collection(d).toJSON())})};Galaxy.modal.show({title:"Visualize tool parameter space and output from different parameter settings?",body:d,buttons:{No:e,Yes:f}})}},D.prototype.action_icons_def[2]],can_draw:function(){return this.dataset&&D.prototype.can_draw.call(this)},build_container_div:function(){return $("
").addClass("track").attr("id","track_"+this.id)},set_dataset:function(a){this.dataset=a,this.data_manager.set("dataset",a)},on_resize:function(){this.request_draw({clear_tile_cache:!0})},add_resize_handle:function(){var a=this,b=!1,c=!1,d=$("
");$(a.container_div).hover(function(){a.config.get_value("content_visible")&&(b=!0,d.show())},function(){b=!1,c||d.hide()}),d.hide().bind("dragstart",function(b,d){c=!0,d.original_height=$(a.content_div).height()}).bind("drag",function(b,c){var d=Math.min(Math.max(c.original_height+c.deltaY,a.min_height_px),a.max_height_px);$(a.tiles_div).css("height",d),a.visible_height_px=a.max_height_px===d?0:d,a.on_resize()}).bind("dragend",function(){a.tile_cache.clear(),c=!1,b||d.hide(),a.config.set_value("height",a.visible_height_px),a.changed()}).appendTo(a.container_div)},hide_contents:function(){this.tiles_div.hide(),this.container_div.find(".yaxislabel, .track-resize").hide()},show_contents:function(){this.tiles_div.show(),this.container_div.find(".yaxislabel, .track-resize").show(),this.request_draw()},get_type:function(){return this instanceof Q?"LabelTrack":this instanceof S?"ReferenceTrack":this instanceof T?"LineTrack":this instanceof X?"ReadTrack":this instanceof W?"VariantTrack":this instanceof R?"CompositeTrack":this instanceof V?"FeatureTrack":""},show_message:function(a){return this.tiles_div.remove(),$("").addClass("message").html(a).appendTo(this.content_div); +define(["libs/underscore","viz/visualization","viz/viz_views","viz/trackster/util","viz/trackster/slotting","viz/trackster/painters","viz/trackster/filters","mvc/dataset/data","mvc/tool/tools","utils/config","viz/bbi-data-manager","ui/editable-text"],function(a,b,c,d,e,f,g,h,i,j,k){function l(a,b){b||(b=0);var c=Math.pow(10,b);return Math.round(a*c)/c}var m=a.extend,n={},o=function(a,b){n[a.attr("id")]=b},p=function(a,b,c,d){c=".group",n[a.attr("id")]=d,a.bind("drag",{handle:"."+b,relative:!0},function(a,b){var d,e,f,g,h,i=($(this),$(this).parent()),j=i.children(".track,.group"),k=n[$(this).attr("id")];if(e=$(this).parents(c),0!==e.length){f=e.position().top,g=f+e.outerHeight();var l=n[e.attr("id")];if(b.offsetYg)return $(this).insertAfter(e),l.remove_drawable(k),void l.container.add_drawable(k)}for(e=null,h=0;h=f&&b.offsetY<=g)return b.offsetY-f0?h-1:h))}).bind("dragstart",function(){$(this).addClass("dragging")}).bind("dragend",function(){$(this).removeClass("dragging")})},q=20,r=100,s=12e3,t=400,u=5e3,v=100,w="Cannot display dataset due to an error. ",x="A converter for this dataset is not installed. Please check your datatypes_conf.xml file.",y="No data for this chrom/contig.",z="Preparing data. This can take a while for a large dataset. If the visualization is saved and closed, preparation will continue in the background.",A="Tool cannot be rerun: ",B="Ready for display",C=10,D=["Histogram","Line","Filled","Intensity"],E=function(a,b,d){if(E.id_counter||(E.id_counter=0),this.id=E.id_counter++,this.view=a,this.container=b,this.drag_handle_class=d.drag_handle_class,this.is_overview=!1,this.action_icons={},this.config=j.ConfigSettingCollection.from_models_and_saved_values(this.config_params,d.prefs),this.config.get_value("name")||this.config.set_value("name",d.name),this.config_onchange&&this.config.on("change",this.config_onchange,this),this.container_div=this.build_container_div(),this.header_div=null,d.header!==!1){var e=new c.TrackHeaderView({model:this,id:this.id});this.header_div=e.$el,this.container_div.append(this.header_div);var f=e.icons_div;this.action_icons=e.action_icons,this.container_div.hover(function(){f.show()},function(){f.hide()})}};E.prototype.action_icons_def=[{name:"toggle_icon",title:"Hide/show content",css_class:"toggle",on_click_fn:function(a){a.config.get_value("content_visible")?(a.action_icons.toggle_icon.addClass("toggle-expand").removeClass("toggle"),a.hide_contents(),a.config.set_value("content_visible",!1)):(a.action_icons.toggle_icon.addClass("toggle").removeClass("toggle-expand"),a.config.set_value("content_visible",!0),a.show_contents())}},{name:"settings_icon",title:"Edit settings",css_class:"gear",on_click_fn:function(a){var b=new j.ConfigSettingCollectionView({collection:a.config});b.render_in_modal("Configure Track")}},{name:"remove_icon",title:"Remove",css_class:"remove-icon",on_click_fn:function(a){$(".tooltip").remove(),a.remove()}}],m(E.prototype,{config_params:[{key:"name",label:"Name",type:"text",default_value:""},{key:"content_visible",type:"bool",default_value:!0,hidden:!0}],config_onchange:function(){},init:function(){},changed:function(){this.view.changed()},can_draw:function(){return this.enabled&&this.config.get_value("content_visible")?!0:!1},request_draw:function(){},_draw:function(){},to_dict:function(){},set_name:function(a){this.old_name=this.config.get_value("name"),this.config.set_value("name",a)},revert_name:function(){this.old_name&&this.config.set_value("name",this.old_name)},remove:function(){this.changed(),this.container.remove_drawable(this);var a=this.view;this.container_div.hide(0,function(){$(this).remove(),a.update_intro_div()})},build_container_div:function(){},update_icons:function(){},hide_contents:function(){},show_contents:function(){},get_drawables:function(){}});var F=function(a,b,c){E.call(this,a,b,c),this.obj_type=c.obj_type,this.drawables=[]};m(F.prototype,E.prototype,{unpack_drawables:function(a){this.drawables=[];for(var b,c=0;c").addClass("content-div").attr("id","group_"+this.id+"_content_div").appendTo(this.container_div),o(this.container_div,this),o(this.content_div,this),p(this.container_div,this.drag_handle_class,".group",this),this.filters_manager=new g.FiltersManager(this),this.header_div.after(this.filters_manager.parent_div),this.filters_manager.parent_div.after($("
")),this.saved_filters_managers=[],"drawables"in c&&this.unpack_drawables(c.drawables),"filters"in c){var d=this.filters_manager;this.filters_manager=new g.FiltersManager(this,c.filters),d.parent_div.replaceWith(this.filters_manager.parent_div),c.filters.visible&&this.setup_multitrack_filtering()}};m(G.prototype,E.prototype,F.prototype,{action_icons_def:[E.prototype.action_icons_def[0],E.prototype.action_icons_def[1],{name:"composite_icon",title:"Show composite track",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_composite_track()}},{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?(a.filters_manager.clear_filters(),a._restore_filter_managers()):(a.setup_multitrack_filtering(),a.request_draw({clear_tile_cache:!0})),a.filters_manager.toggle()}},E.prototype.action_icons_def[2]],build_container_div:function(){var a=$("
").addClass("group").attr("id","group_"+this.id);return this.container&&this.container.content_div.append(a),a},hide_contents:function(){this.tiles_div.hide()},show_contents:function(){this.tiles_div.show(),this.request_draw()},update_icons:function(){var a=this.drawables.length;if(0===a)this.action_icons.composite_icon.hide(),this.action_icons.filters_icon.hide();else if(1===a)this.action_icons.composite_icon.toggle(this.drawables[0]instanceof S),this.action_icons.filters_icon.hide();else{var b,c,d,e=!0,f=this.drawables[0].get_type(),h=0;for(b=0;a>b;b++){if(d=this.drawables[b],d.get_type()!==f){can_composite=!1;break}d instanceof W&&h++}if(e&&this.drawables[0]instanceof U?this.action_icons.composite_icon.show():(this.action_icons.composite_icon.hide(),$(".tooltip").remove()),h>1&&h===this.drawables.length){var i,j={};for(d=this.drawables[0],c=0;c0)}else this.action_icons.filters_icon.hide()}},_restore_filter_managers:function(){for(var a=0;a0){this.saved_filters_managers=[];for(var a=0;a").addClass("top-container").appendTo(c),this.browser_content_div=$("
").addClass("content").appendTo(c),this.bottom_container=$("
").addClass("bottom-container").appendTo(c),this.top_labeltrack=$("
").addClass("top-labeltrack").appendTo(this.top_container),this.viewport_container=$("
").addClass("viewport-container").attr("id","viewport-container").appendTo(this.browser_content_div),this.content_div=this.viewport_container,o(this.viewport_container,d),this.intro_div=$("
").addClass("intro").appendTo(this.viewport_container);$("
").text("Add Datasets to Visualization").addClass("action-button").appendTo(this.intro_div).click(function(){b.select_datasets(Galaxy.root+"visualization/list_current_history_datasets",Galaxy.root+"api/datasets",{"f-dbkey":d.dbkey},function(b){a.each(b,function(a){d.add_drawable(_(a,d,d))})})});this.nav_container=$("
").addClass("trackster-nav-container").prependTo(this.top_container),this.nav=$("
").addClass("trackster-nav").appendTo(this.nav_container),this.stand_alone&&(this.nav_container.addClass("stand-alone"),this.nav.addClass("stand-alone")),this.overview=$("
").addClass("overview").appendTo(this.bottom_container),this.overview_viewport=$("
").addClass("overview-viewport").appendTo(this.overview),this.overview_close=$("").attr("title","Close overview").addClass("icon-button overview-close tooltip").hide().appendTo(this.overview_viewport),this.overview_highlight=$("
").addClass("overview-highlight").hide().appendTo(this.overview_viewport),this.overview_box_background=$("
").addClass("overview-boxback").appendTo(this.overview_viewport),this.overview_box=$("
").addClass("overview-box").appendTo(this.overview_viewport),this.default_overview_height=this.overview_box.height(),this.nav_controls=$("
").addClass("nav-controls").appendTo(this.nav),this.chrom_select=$("").addClass("nav-input").hide().bind("keyup focusout",e).appendTo(this.nav_controls),this.location_span=$("").addClass("location").attr("title","Click to change location").tooltip({placement:"bottom"}).appendTo(this.nav_controls),this.location_span.click(function(){d.location_span.hide(),d.chrom_select.hide(),d.nav_input.val(d.chrom+":"+d.low+"-"+d.high),d.nav_input.css("display","inline-block"),d.nav_input.select(),d.nav_input.focus(),d.nav_input.autocomplete({source:function(a,b){var c=[],e=$.map(d.get_tracks(W),function(b){return b.data_manager.search_features(a.term).success(function(a){c=c.concat(a)})});$.when.apply($,e).done(function(){b($.map(c,function(a){return{label:a[0],value:a[1]}}))})},minLength:2})}),void 0!==this.vis_id&&(this.hidden_input=$("").attr("type","hidden").val(this.vis_id).appendTo(this.nav_controls)),this.zo_link=$("").attr("id","zoom-out").attr("title","Zoom out").tooltip({placement:"bottom"}).click(function(){d.zoom_out()}).appendTo(this.nav_controls),this.zi_link=$("").attr("id","zoom-in").attr("title","Zoom in").tooltip({placement:"bottom"}).click(function(){d.zoom_in()}).appendTo(this.nav_controls),this.load_chroms_deferred=this.load_chroms({low:0}),this.chrom_select.bind("change",function(){d.change_chrom(d.chrom_select.val())}),this.browser_content_div.click(function(){$(this).find("input").trigger("blur")}),this.browser_content_div.bind("dblclick",function(a){d.zoom_in(a.pageX,this.viewport_container)}),this.overview_box.bind("dragstart",function(a,b){this.current_x=b.offsetX}).bind("drag",function(a,b){var c=b.offsetX-this.current_x;this.current_x=b.offsetX;var e=Math.round(c/d.viewport_container.width()*(d.max_high-d.max_low));d.move_delta(-e)}),this.overview_close.click(function(){d.reset_overview()}),this.viewport_container.bind("draginit",function(a){return a.clientX>d.viewport_container.width()-16?!1:void 0}).bind("dragstart",function(a,b){b.original_low=d.low,b.current_height=a.clientY,b.current_x=b.offsetX}).bind("drag",function(a,b){var c=$(this),e=b.offsetX-b.current_x,f=c.scrollTop()-(a.clientY-b.current_height);c.scrollTop(f),b.current_height=a.clientY,b.current_x=b.offsetX;var g=Math.round(e/d.viewport_container.width()*(d.high-d.low));d.move_delta(g)}),this.top_labeltrack.bind("dragstart",function(){return $("
").addClass("zoom-area").css("height",d.browser_content_div.height()+d.top_labeltrack.height()+1).appendTo($(this))}).bind("drag",function(a,b){$(b.proxy).css({left:Math.min(a.pageX,b.startX)-d.container.offset().left,width:Math.abs(a.pageX-b.startX)});var c=Math.min(a.pageX,b.startX)-d.container.offset().left,e=Math.max(a.pageX,b.startX)-d.container.offset().left,f=d.high-d.low,g=d.viewport_container.width();d.update_location(Math.round(c/g*f)+d.low,Math.round(e/g*f)+d.low)}).bind("dragend",function(a,b){var c=Math.min(a.pageX,b.startX),e=Math.max(a.pageX,b.startX),f=d.high-d.low,g=d.viewport_container.width(),h=d.low;d.low=Math.round(c/g*f)+h,d.high=Math.round(e/g*f)+h,$(b.proxy).remove(),d.request_redraw()}),this.add_label_track(new R(this,{content_div:this.top_labeltrack})),$(window).bind("resize",function(){this.resize_timer&&clearTimeout(this.resize_timer),this.resize_timer=setTimeout(function(){d.resize_window()},500)}),$(document).bind("redraw",function(){d.redraw()}),this.reset(),$(window).trigger("resize")},get_base_color:function(a){return this.config.get_value(a.toLowerCase()+"_color")||this.config.get_value("n_color")}});m(H.prototype,F.prototype,{changed:function(){this.has_changes=!0},update_intro_div:function(){this.intro_div.toggle(0===this.drawables.length)},trigger_navigate:function(a,b,c,d){if(this.timer&&clearTimeout(this.timer),d){var e=this;this.timer=setTimeout(function(){e.trigger("navigate",a+":"+b+"-"+c)},500)}else view.trigger("navigate",a+":"+b+"-"+c)},update_location:function(a,b){this.location_span.text(d.commatize(a)+" - "+d.commatize(b)),this.nav_input.val(this.chrom+":"+d.commatize(a)+"-"+d.commatize(b));var c=this.chrom_select.val();""!==c&&this.trigger_navigate(c,this.low,this.high,!0)},load_chroms:function(a){a.num=v;var b=this,c=$.Deferred();return $.ajax({url:Galaxy.root+"api/genomes/"+this.dbkey,data:a,dataType:"json",success:function(a){if(0!==a.chrom_info.length){if(a.reference){var d=new T(b);b.add_label_track(d),b.reference_track=d}b.chrom_data=a.chrom_info;for(var e='',f=0,g=b.chrom_data.length;g>f;f++){var h=b.chrom_data[f].chrom;e+='"}a.prev_chroms&&(e+='"),a.next_chroms&&(e+='"),b.chrom_select.html(e),b.chrom_start_index=a.start_index,c.resolve(a.chrom_info)}},error:function(){alert("Could not load chroms for this dbkey: "+b.dbkey)}}),c},change_chrom:function(a,b,c){var d=this;if(!d.chrom_data)return void d.load_chroms_deferred.then(function(){d.change_chrom(a,b,c)});if(a&&"None"!==a){if("previous"===a)return void d.load_chroms({low:this.chrom_start_index-v});if("next"===a)return void d.load_chroms({low:this.chrom_start_index+v});var e=$.grep(d.chrom_data,function(b){return b.chrom===a})[0];if(void 0===e)return void d.load_chroms({chrom:a},function(){d.change_chrom(a,b,c)});if(a!==d.chrom){d.chrom=a,d.chrom_select.val(d.chrom),d.max_high=e.len-1,d.reset();for(var f=0,g=d.drawables.length;g>f;f++){var h=d.drawables[f];h.init&&h.init()}d.reference_track&&d.reference_track.init()}void 0===b&&void 0===c?(d.low=0,d.high=d.max_high):(d.low=void 0!==b?Math.max(b,0):0,void 0===c?(d.low=Math.max(d.low-15,0),d.high=d.low+30):d.high=Math.min(c,d.max_high)),d.request_redraw()}},go_to:function(a){a=a.replace(/,/g,""),a=a.replace(/:|\-/g," ");var b=a.split(/\s+/),c=b[0],d=b[1]?parseInt(b[1],10):void 0,e=b[2]?parseInt(b[2],10):void 0;this.change_chrom(c,d,e)},move_fraction:function(a){var b=this,c=b.high-b.low;this.move_delta(a*c)},move_delta:function(a){var b=this,c=b.high-b.low;b.low-ab.max_high?(b.high=b.max_high,b.low=b.max_high-c):(b.high-=a,b.low-=a),b.request_redraw({data_fetch:!1}),this.redraw_on_move_fn&&clearTimeout(this.redraw_on_move_fn),this.redraw_on_move_fn=setTimeout(function(){b.request_redraw()},200);var d=b.chrom_select.val();this.trigger_navigate(d,b.low,b.high,!0)},add_drawable:function(a){F.prototype.add_drawable.call(this,a),a.init(),this.changed(),this.update_intro_div();var b=this;a.config.on("change",function(){b.changed()})},add_label_track:function(a){a.view=this,a.init(),this.label_tracks.push(a)},remove_drawable:function(a,b){if(F.prototype.remove_drawable.call(this,a),b){var c=this;a.container_div.hide(0,function(){$(this).remove(),c.update_intro_div()})}},reset:function(){this.low=this.max_low,this.high=this.max_high,this.viewport_container.find(".yaxislabel").remove()},request_redraw:function(b,c){var d=this,e=c?[c]:d.drawables;a.each(e,function(c){var e=a.find(d.tracks_to_be_redrawn,function(a){return a[0]===c});e?e[1]=b:d.tracks_to_be_redrawn.push([c,b])}),this.requested_redraw||(requestAnimationFrame(function(){d._redraw()}),this.requested_redraw=!0)},_redraw:function(){this.requested_redraw=!1;var b=this.low,c=this.high;bthis.max_high&&(c=this.max_high);var d=this.high-this.low;0!==this.high&&df&&this.overview_box.css("left",e-(g-f)/2),this.overview_highlight&&this.overview_highlight.css({left:e,width:f}),a.each(this.tracks_to_be_redrawn,function(a){var b=a[0],c=a[1];b&&b._draw(c)}),this.tracks_to_be_redrawn=[],a.each(this.label_tracks,function(a){a._draw()})},zoom_in:function(a){if(!(0===this.max_high||this.high-this.low<=this.min_separation)){var b=this.high-this.low,c=b/2+this.low,d=b/this.zoom_factor/2;a&&(c=a/this.viewport_container.width()*(this.high-this.low)+this.low),this.low=Math.round(c-d),this.high=Math.round(c+d),this.changed(),this.request_redraw()}},zoom_out:function(){if(0!==this.max_high){var a=this.high-this.low,b=a/2+this.low,c=a*this.zoom_factor/2;this.low=Math.round(b-c),this.high=Math.round(b+c),this.changed(),this.request_redraw()}},resize_viewport:function(){this.viewport_container.height(this.container.height()-this.top_container.height()-this.bottom_container.height())},resize_window:function(){this.resize_viewport(),this.request_redraw()},set_overview:function(a){if(this.overview_drawable){if(this.overview_drawable.dataset.id===a.dataset.id)return;this.overview_viewport.find(".track").remove()}var b=a.copy({content_div:this.overview_viewport}),c=this;b.header_div.hide(),b.is_overview=!0,c.overview_drawable=b,this.overview_drawable.postdraw_actions=function(){c.overview_highlight.show().height(c.overview_drawable.content_div.height()),c.overview_viewport.height(c.overview_drawable.content_div.height()+c.overview_box.outerHeight()),c.overview_close.show(),c.resize_window()},c.overview_drawable.request_draw(),this.changed()},reset_overview:function(){$(".tooltip").remove(),this.overview_viewport.find(".track-tile").remove(),this.overview_viewport.height(this.default_overview_height),this.overview_box.height(this.default_overview_height),this.overview_close.hide(),this.overview_highlight.hide(),view.resize_window(),view.overview_drawable=null}});var I=i.Tool.extend({defaults:{track:null},initialize:function(a){i.Tool.prototype.initialize.call(this,a);var b=!0;void 0!==a.tool_state&&void 0!==a.tool_state.hidden&&(b=a.tool_state.hidden),this.set("hidden",b),this.remove_inputs(["data","hidden_data","conditional"])},state_dict:function(){return a.extend(this.get_inputs_dict(),{hidden:!this.is_visible()})}}),J=Backbone.View.extend({events:{"change :input":"update_value"},render:function(){var a=this.$el.addClass("param-row"),b=this.model,c=($("
").addClass("param-label").text(b.get("label")).appendTo(a),$("
").addClass("param-input").html(b.get("html")).appendTo(a));c.find(":input").val(b.get("value")),$("
").appendTo(a)},update_value:function(a){this.model.set_value($(a.target).val())}}),K=Backbone.View.extend({initialize:function(){this.model.on("change:hidden",this.set_visible,this)},render:function(){var a=this;tool=this.model,parent_div=this.$el.addClass("dynamic-tool").hide(),parent_div.bind("drag",function(a){a.stopPropagation()}).click(function(a){a.stopPropagation()}).bind("dblclick",function(a){a.stopPropagation()}).keydown(function(a){a.stopPropagation()});$("
").appendTo(parent_div).text(tool.get("name"));tool.get("inputs").each(function(a){var b=new J({model:a});b.render(),parent_div.append(b.$el)}),parent_div.find("input").click(function(){$(this).select()});var b=$("
").addClass("param-row").appendTo(parent_div),c=$("").attr("value","Run on complete dataset").appendTo(b),d=$("").attr("value","Run on visible region").appendTo(b);d.click(function(){a.run_on_region()}),c.click(function(){a.run_on_dataset()}),tool.is_visible()&&this.$el.show()},set_visible:function(){this.$el.toggle(this.model.is_visible())},update_params:function(){for(var a=0;a").append(d),this.data=e,this.stale=!1};M.prototype.predisplay_actions=function(){};var N=function(a,b,c,d,e){M.call(this,a,b,c,d,e)};N.prototype.predisplay_actions=function(){};var O=function(a,b,c,d,e,f,g,h,i,j,k){M.call(this,a,b,c,d,e),this.mode=f,this.all_slotted=h,this.feature_mapper=i,this.has_icons=!1,this.incomplete_features=j,this.other_tiles_features_drawn={},this.seq_data=k};m(O.prototype,M.prototype),O.prototype.predisplay_actions=function(){};var P=function(a,c,d){m(d,{drag_handle_class:"draghandle"}),E.call(this,a,c,d),this.dataset=null,d.dataset&&(this.dataset=d.dataset instanceof Backbone.Model?d.dataset:new h.Dataset(d.dataset)),this.dataset_check_type="converted_datasets_state",this.data_url_extra_params={},this.data_query_wait="data_query_wait"in d?d.data_query_wait:u,this.data_manager="data_manager"in d?d.data_manager:new b.GenomeDataManager({dataset:this.dataset,genome:new b.Genome({key:a.dbkey,chroms_info:{chrom_info:a.chrom_data}}),data_mode_compatible:this.data_and_mode_compatible,can_subset:this.can_subset}),this.min_height_px=16,this.max_height_px=800,this.visible_height_px=this.config.get_value("height"),this.content_div=$("
").appendTo(this.container_div),this.container&&(this.container.content_div.append(this.container_div),"resize"in d&&!d.resize||this.add_resize_handle())};m(P.prototype,E.prototype,{action_icons_def:[{name:"mode_icon",title:"Set display mode",css_class:"chevron-expand",on_click_fn:function(){}},E.prototype.action_icons_def[0],{name:"overview_icon",title:"Set as overview",css_class:"application-dock-270",on_click_fn:function(a){a.view.set_overview(a)}},E.prototype.action_icons_def[1],{name:"filters_icon",title:"Filters",css_class:"ui-slider-050",on_click_fn:function(a){a.filters_manager.visible()?a.filters_manager.clear_filters():a.filters_manager.init_filters(),a.filters_manager.toggle()}},{name:"tools_icon",title:"Tool",css_class:"hammer",on_click_fn:function(a){a.tool.toggle(),a.tool.is_visible()?a.set_name(a.config.get_value("name")+a.tool_region_and_parameters_str()):a.revert_name(),$(".tooltip").remove()}},{name:"param_space_viz_icon",title:"Tool parameter space visualization",css_class:"arrow-split",on_click_fn:function(c){var d="Tool:"+c.tool.get("name")+"
Dataset:"+c.config.get_value("name")+'
Region(s): ',e=function(){Galaxy.modal.hide(),$(window).unbind("keypress.check_enter_esc")},f=function(){var d,e=$('select[name="regions"] option:selected').val(),f=new b.GenomeRegion({chrom:view.chrom,start:view.low,end:view.high}),g=a.map($(".bookmark"),function(a){return new b.GenomeRegion({from_str:$(a).children(".position").text()})});d="cur"===e?[f]:"bookmarks"===e?g:[f].concat(g),Galaxy.modal.hide(),window.location.href=Galaxy.root+"visualization/sweepster?"+$.param({dataset_id:c.dataset.id,hda_ldda:c.dataset.get("hda_ldda"),regions:JSON.stringify(new Backbone.Collection(d).toJSON())})};Galaxy.modal.show({title:"Visualize tool parameter space and output from different parameter settings?",body:d,buttons:{No:e,Yes:f}})}},E.prototype.action_icons_def[2]],can_draw:function(){return this.dataset&&E.prototype.can_draw.call(this)},build_container_div:function(){return $("
").addClass("track").attr("id","track_"+this.id)},set_dataset:function(a){this.dataset=a,this.data_manager.set("dataset",a)},on_resize:function(){this.request_draw({clear_tile_cache:!0})},add_resize_handle:function(){var a=this,b=!1,c=!1,d=$("
");$(a.container_div).hover(function(){a.config.get_value("content_visible")&&(b=!0,d.show())},function(){b=!1,c||d.hide()}),d.hide().bind("dragstart",function(b,d){c=!0,d.original_height=$(a.content_div).height()}).bind("drag",function(b,c){var d=Math.min(Math.max(c.original_height+c.deltaY,a.min_height_px),a.max_height_px);$(a.tiles_div).css("height",d),a.visible_height_px=a.max_height_px===d?0:d,a.on_resize()}).bind("dragend",function(){a.tile_cache.clear(),c=!1,b||d.hide(),a.config.set_value("height",a.visible_height_px),a.changed()}).appendTo(a.container_div)},hide_contents:function(){this.tiles_div.hide(),this.container_div.find(".yaxislabel, .track-resize").hide()},show_contents:function(){this.tiles_div.show(),this.container_div.find(".yaxislabel, .track-resize").show(),this.request_draw()},get_type:function(){return this instanceof R?"LabelTrack":this instanceof T?"ReferenceTrack":this instanceof U?"LineTrack":this instanceof Y?"ReadTrack":this instanceof X?"VariantTrack":this instanceof S?"CompositeTrack":this instanceof W?"FeatureTrack":""},show_message:function(a){return this.tiles_div.remove(),$("").addClass("message").html(a).appendTo(this.content_div); -},init:function(a){var b=this;if(b.enabled=!1,b.tile_cache.clear(),b.data_manager.clear(),b.content_div.children().remove(),b.container_div.removeClass("nodata error pending"),b.tiles_div=$("
").addClass("tiles").appendTo(b.content_div),b.dataset.id){var c=$.Deferred(),d={hda_ldda:b.dataset.get("hda_ldda"),data_type:this.dataset_check_type,chrom:b.view.chrom,retry:a};return $.getJSON(this.dataset.url(),d,function(a){if(a&&"error"!==a&&"error"!==a.kind)"no converter"===a?(b.container_div.addClass("error"),b.show_message(w)):"no data"===a||void 0!==a.data&&(null===a.data||0===a.data.length)?(b.container_div.addClass("nodata"),b.show_message(x)):"pending"===a?(b.container_div.addClass("pending"),b.show_message(y),setTimeout(function(){b.init()},b.data_query_wait)):("data"===a||"data"===a.status)&&(a.valid_chroms&&(b.valid_chroms=a.valid_chroms,b.update_icons()),b.tiles_div.text(A),b.view.chrom?(b.tiles_div.text(""),b.tiles_div.css("height",b.visible_height_px+"px"),b.enabled=!0,$.when.apply($,b.predraw_init()).done(function(){c.resolve(),b.container_div.removeClass("nodata error pending"),b.request_draw()})):c.resolve());else{b.container_div.addClass("error");var d=b.show_message(v);a.message&&(d.append($("").text("View error").click(function(){Galaxy.modal.show({title:"Trackster Error",body:"
"+a.message+"
",buttons:{Close:function(){Galaxy.modal.hide()}}})})),d.append($("").text(" ")),d.append($("
").text("Try again").click(function(){b.init(!0)})))}}),this.update_icons(),c}},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(c&&void 0!==c.min&&void 0!==c.max){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_default_value("min_value",d),a.config.set_default_value("max_value",e),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},get_drawables:function(){return this}});var P=function(c,d,e){O.call(this,c,d,e);var f=this;if(o(f.container_div,f.drag_handle_class,".group",f),this.filters_manager=new g.FiltersManager(this,"filters"in e?e.filters:null),this.data_manager.set("filters_manager",this.filters_manager),this.filters_available=!1,this.tool=e.tool?new H(a.extend(e.tool,{track:this,tool_state:e.tool_state})):null,this.tile_cache=new b.Cache(B),this.left_offset=0,this.header_div&&(this.set_filters_manager(this.filters_manager),this.tool)){var h=new J({model:this.tool});h.render(),this.dynamic_tool_div=h.$el,this.header_div.after(this.dynamic_tool_div)}this.tiles_div=$("
").addClass("tiles").appendTo(this.content_div),this.config.get_value("content_visible")||this.tiles_div.hide(),this.overlay_div=$("
").addClass("overlay").appendTo(this.content_div),e.mode&&this.change_mode(e.mode)};l(P.prototype,D.prototype,O.prototype,{action_icons_def:O.prototype.action_icons_def.concat([{name:"show_more_rows_icon",title:"To minimize track height, not all feature rows are displayed. Click to display more rows.",css_class:"exclamation",on_click_fn:function(a){$(".tooltip").remove(),a.slotters[a.view.resolution_px_b].max_rows*=2,a.request_draw({clear_tile_cache:!0})},hide:!0}]),copy:function(a){var b=this.to_dict();l(b,{data_manager:this.data_manager});var c=new this.constructor(this.view,a,b);return c.change_mode(this.mode),c.enabled=this.enabled,c},set_filters_manager:function(a){this.filters_manager=a,this.header_div.after(this.filters_manager.parent_div)},to_dict:function(){return{track_type:this.get_type(),dataset:{id:this.dataset.id,hda_ldda:this.dataset.get("hda_ldda")},prefs:this.config.to_key_value_dict(),mode:this.mode,filters:this.filters_manager.to_dict(),tool_state:this.tool?this.tool.state_dict():{}}},set_min_max:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(isNaN(parseFloat(a.config.get_value("min_value")))||isNaN(parseFloat(a.config.get_value("max_value")))){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},change_mode:function(a){var b=this;return b.mode=a,b.config.set_value("mode",a),"Auto"===a&&this.data_manager.clear(),b.request_draw({clear_tile_cache:!0}),this.action_icons.mode_icon.attr("title","Set display mode (now: "+b.mode+")"),b},update_icons:function(){var a=this;a.action_icons.filters_icon.toggle(a.filters_available),a.action_icons.tools_icon.toggle(null!==a.tool),a.action_icons.param_space_viz_icon.toggle(null!==a.tool)},_gen_tile_cache_key:function(a,b){return a+"_"+b},request_draw:function(a){a&&a.clear_tile_cache&&this.tile_cache.clear(),this.view.request_redraw(a,this)},before_draw:function(){this.max_height_px=0},_draw:function(c){if(this.can_draw()){var d=c&&c.clear_after,e=this.view.low,f=this.view.high,g=this.view.container.width(),h=this.view.resolution_px_b,i=1/h;this.is_overview&&(e=this.view.max_low,f=this.view.max_high,h=g/(view.max_high-view.max_low),i=1/h),this.before_draw(),this.tiles_div.children().addClass("remove");for(var j,k,l=Math.floor(s*i),m=Math.floor(e/l),n=[],o=[];f>m*l;)j=new b.GenomeRegion({chrom:this.view.chrom,start:m*l,end:Math.min((m+1)*l,this.view.max_high)}),k=this.draw_helper(j,h,c),n.push(k),$.when(k).then(function(a){o.push(a)}),m+=1;d||this.tiles_div.children(".remove").removeClass("remove").remove();var p=this;$.when.apply($,n).then(function(){p.tiles_div.children(".remove").remove(),o=a.filter(o,function(a){return null!==a}),0!==o.length&&p.postdraw_actions(o,g,h,d)})}},_add_yaxis_label:function(a,b){var c=this,d="max"===a?"top":"bottom",e="max"===a?"max":"min",f="max"===a?"max_value":"min_value",g=this.container_div.find(".yaxislabel."+d),h=k(c.config.get_value(f),1);b=b||function(){c.request_draw({clear_tile_cache:!0})},0!==g.length?g.text(h):(g=$("
").text(h).make_text_editable({num_cols:12,on_finish:function(a){$(".tooltip").remove(),c.config.set_value(f,k(a,1)),b()},help_text:"Set "+e+" value"}).addClass("yaxislabel "+d).css("color",this.config.get_value("label_color")),this.container_div.prepend(g))},postdraw_actions:function(b,c,d){var e=a.filter(b,function(a){return a instanceof M});if(e.length>0){this.max_height_px=0;var f=this;a.each(b,function(a){a instanceof M||(a.html_elt.remove(),f.draw_helper(a.region,d,{force:!0,mode:"Coverage"}))}),f._add_yaxis_label("max")}else{this.container_div.find(".yaxislabel").remove();var g=a.find(b,function(a){return a.has_icons});g&&a.each(b,function(a){a.has_icons||a.html_elt.css("padding-top",p)})}},get_mode:function(){return this.mode},update_auto_mode:function(){},_get_drawables:function(){return[this]},draw_helper:function(b,c,e){e||(e={});var f=e.force,g=e.mode||this.mode,h=1/c,i=this,j=this._get_drawables(),k=this._gen_tile_cache_key(c,b),l=function(a){return a&&"track"in a},m=f?void 0:i.tile_cache.get_elt(k);if(m)return l(m)&&i.show_tile(m,c),m;if(e.data_fetch===!1)return null;var n=function(){var c=a.find(C,function(a){return a===g})?"Coverage":g,d=a.map(j,function(a){return a.data_manager.get_data(b,c,h,i.data_url_extra_params)});return view.reference_track&&d.push(view.reference_track.data_manager.get_data(b,g,h,view.reference_track.data_url_extra_params)),d},o=$.Deferred();return i.tile_cache.set_elt(k,o),$.when.apply($,n()).then(function(){var f,g=n(),h=g;if(a.find(g,function(a){return d.is_deferred(a)}))return i.tile_cache.set_elt(k,void 0),void $.when(i.draw_helper(b,c,e)).then(function(a){o.resolve(a)});view.reference_track&&(f=view.reference_track.data_manager.subset_entry(g.pop(),b));var l=[],m=[];a.each(j,function(a,b){var d=a.mode,e=h[b];"Auto"===d&&(d=a.get_mode(e),a.update_auto_mode(d)),l.push(d),m.push(a.get_canvas_height(e,d,c,t))});var p,q=i.view.canvas_manager.new_canvas(),r=b.get("start"),s=b.get("end"),t=Math.ceil((s-r)*c)+i.left_offset,u=a.max(m);q.width=t,q.height=e.height||u;var v=q.getContext("2d");v.translate(i.left_offset,0),j.length>1&&(v.globalAlpha=.5,v.globalCompositeOperation="source-over"),a.each(j,function(a,d){p=a.draw_tile(h[d],v,l[d],b,c,f)}),void 0!==p&&(i.tile_cache.set_elt(k,p),i.show_tile(p,c)),o.resolve(p)}),o},get_canvas_height:function(){return this.visible_height_px},_draw_line_track_tile:function(b,c,d,e,g){-1!==[void 0,null].indexOf(this.config.get_value("min_value"))&&this.config.set_value("min_value",0),-1!==[void 0,null,0].indexOf(this.config.get_value("max_value"))&&this.config.set_value("max_value",a.max(a.map(b.data,function(a){return a[1]}))||0);var h=c.canvas,i=new f.LinePainter(b.data,e.get("start"),e.get("end"),this.config.to_key_value_dict(),d);return i.draw(c,h.width,h.height,g),new M(this,e,g,h,b.data)},draw_tile:function(){},show_tile:function(a,b){var c=a.html_elt;a.predisplay_actions();var d=Math.round((a.low-(this.is_overview?this.view.max_low:this.view.low))*b);this.left_offset&&(d-=this.left_offset),c.css("left",d),c.hasClass("remove")?c.removeClass("remove"):this.tiles_div.append(c),c.css("height","auto"),this.max_height_px=Math.max(this.max_height_px,c.height()-2),c.parent().children().css("height",this.max_height_px+"px");var e=this.max_height_px;0!==this.visible_height_px&&(e=Math.min(this.max_height_px,this.visible_height_px)),this.tiles_div.css("height",e+"px")},tool_region_and_parameters_str:function(b){var c=this,d=void 0!==b?b.toString():"all",e=a.values(c.tool.get_inputs_dict()).join(", ");return" - region=["+d+"], parameters=["+e+"]"},data_and_mode_compatible:function(a,b){return"Auto"===b?!0:"Coverage"===b?"bigwig"===a.dataset_type:"bigwig"===a.dataset_type||"no_detail"===a.extra_info?!1:!0},can_subset:function(a){return a.message||"no_detail"===a.extra_info?!1:"bigwig"===a.dataset_type?a.data[1][0]-a.data[0][0]===1:!0},init_for_tool_data:function(){this.data_manager.set("data_type","raw_data"),this.data_query_wait=1e3,this.dataset_check_type="state"}});var Q=function(a,b){O.call(this,a,b,{resize:!1,header:!1}),this.container_div.addClass("label-track")};l(Q.prototype,O.prototype,{init:function(){this.enabled=!0},predraw_init:function(){},_draw:function(){for(var a=this.view,b=a.high-a.low,c=Math.floor(Math.pow(10,Math.floor(Math.log(b)/Math.log(10)))),e=Math.floor(a.low/c)*c,f=this.view.container.width(),g=$("
").addClass("label-container");e").addClass("pos-label").text(d.commatize(e)).css({left:h})),e+=c}this.content_div.children(":first").remove(),this.content_div.append(g)}});var R=function(b,c,d){if(P.call(this,b,c,d),this.drawables=[],"drawables"in d){for(var e,f=0;fthis.left_offset&&(this.left_offset=e.left_offset);this.enabled=!0}a.each(this.drawables,function(a){(a instanceof V||a instanceof X)&&a.change_mode("Coverage")}),this.update_icons(),this.obj_type="CompositeTrack"};l(R.prototype,P.prototype,{display_modes:C,config_params:a.union(D.prototype.config_params,[{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),action_icons_def:[{name:"composite_icon",title:"Show individual tracks",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_group()}}].concat(P.prototype.action_icons_def),to_dict:E.prototype.to_dict,add_drawable:E.prototype.add_drawable,unpack_drawables:E.prototype.unpack_drawables,config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},on_resize:function(){var b=this.visible_height_px;a.each(this.drawables,function(a){a.visible_height_px=b}),O.prototype.on_resize.call(this)},change_mode:function(a){P.prototype.change_mode.call(this,a);for(var b=0;be&&(e=f)}for(d=0;dthis.view.canvas_manager.char_width_px?(this.tiles_div.show(),d=!0,f=P.prototype.draw_helper.call(this,a,b,c)):(d=!1,this.tiles_div.hide()),e!==d&&this.view.resize_viewport(),f},can_subset:function(){return!0},draw_tile:function(a,b,c,d,e){var f=this.data_manager.subset_entry(a,d),g=f.data,h=b.canvas;b.font=b.canvas.manager.default_font,b.textAlign="center";for(var i=0,j=g.length;j>i;i++)b.fillStyle=this.view.get_base_color(g[i]),b.fillText(g[i],Math.floor(i*e),10);return new L(this,d,e,h,f)}});var T=function(a,b,c){this.mode="Histogram",P.call(this,a,b,c)};l(T.prototype,D.prototype,P.prototype,{display_modes:C,config_params:a.union(D.prototype.config_params,[{key:"color",label:"Color",type:"color"},{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},before_draw:function(){},draw_tile:function(a,b,c,d,e){return this._draw_line_track_tile(a,b,c,d,e)},can_subset:function(a){return a.data[1][0]-a.data[0][0]===1},postdraw_actions:function(){this._add_yaxis_label("max"),this._add_yaxis_label("min")}});var U=function(a,b,c){this.mode="Heatmap",P.call(this,a,b,c)};l(U.prototype,D.prototype,P.prototype,{display_modes:["Heatmap"],config_params:a.union(D.prototype.config_params,[{key:"pos_color",label:"Positive Color",type:"color",default_value:"#FF8C00"},{key:"neg_color",label:"Negative Color",type:"color",default_value:"#4169E1"},{key:"min_value",label:"Min Value",type:"int",default_value:void 0},{key:"max_value",label:"Max Value",type:"int",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:500,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(a){a.data})},draw_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.DiagonalHeatmapPainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new L(this,d,e,g,a.data)}});var V=function(a,b,c){P.call(this,a,b,c),this.container_div.addClass("feature-track"),this.summary_draw_height=30,this.slotters={},this.start_end_dct={},this.left_offset=200,this.set_painter_from_config()};l(V.prototype,D.prototype,P.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(D.prototype.config_params,[{key:"block_color",label:"Block color",type:"color"},{key:"reverse_strand_color",label:"Antisense strand color",type:"color"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0,help:"Show the number of items in each bin when drawing summary histogram"},{key:"min_value",label:"Histogram minimum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"connector_style",label:"Connector style",type:"select",default_value:"fishbones",options:[{label:"Line with arrows",value:"fishbone"},{label:"Arcs",value:"arcs"}]},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.set_painter_from_config(),this.request_draw({clear_tile_cache:!0})},set_painter_from_config:function(){this.painter="arcs"===this.config.get_value("connector_style")?f.ArcLinkedFeaturePainter:f.LinkedFeaturePainter},postdraw_actions:function(b,c,d,e){P.prototype.postdraw_actions.call(this,b,c,d,e);var f,g=this,h=a.filter(b,function(a){return a instanceof M});if(0===h.length){var i={};a.each(a.pluck(b,"incomplete_features"),function(b){a.each(b,function(a){i[a[0]]=a})});var j=this;a.each(b,function(b){var c=a.omit(i,a.map(b.incomplete_features,function(a){return a[0]}));if(c=a.omit(c,a.keys(b.other_tiles_features_drawn)),0!==a.size(c)){var d={data:a.values(c)},e=j.view.canvas_manager.new_canvas(),f=e.getContext("2d");e.height=Math.max(b.canvas.height,j.get_canvas_height(d,b.mode,b.w_scale,100)),e.width=b.canvas.width,f.drawImage(b.canvas,0,0),f.translate(g.left_offset,0);var h=j.draw_tile(d,f,b.mode,b.region,b.w_scale,b.seq_data);$(b.canvas).replaceWith($(h.canvas)),b.canvas=e,a.extend(b.other_tiles_features_drawn,i)}})}if(g.filters_manager){var k,l=g.filters_manager.filters;for(k=0;kr?"Squish":"Pack",mode},get_canvas_height:function(a,b,c,d){if("Coverage"===b||"bigwig"===a.dataset_type)return this.summary_draw_height;var e=this.incremental_slots(c,a.data,b),f=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return Math.max(this.min_height_px,f.get_required_height(e,d))},draw_tile:function(a,b,c,d,e,f,g){var h=this,i=b.canvas,j=d.get("start"),k=d.get("end"),l=this.left_offset;if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,c,d,e);var m=[],n=this.slotters[e].slots;if(all_slotted=!0,a.data)for(var o=this.filters_manager.filters,p=0,q=a.data.length;q>p;p++){for(var r,s=a.data[p],t=!1,u=0,v=o.length;v>u;u++)if(r=o[u],r.update_attrs(s),!r.keep(s)){t=!0;break}t||(m.push(s),s[0]in n||(all_slotted=!1))}var w=this.filters_manager.alpha_filter?new K(this.filters_manager.alpha_filter):null,x=this.filters_manager.height_filter?new K(this.filters_manager.height_filter):null,y=new this.painter(m,j,k,this.config.to_key_value_dict(),c,w,x,f,function(a){return h.view.get_base_color(a)}),z=null;if(b.fillStyle=this.config.get_value("block_color"),b.font=b.canvas.manager.default_font,b.textAlign="right",a.data){var A=y.draw(b,i.width,i.height,e,n);z=A.feature_mapper,incomplete_features=A.incomplete_features,z.translation=-l}return g?void 0:new N(h,d,e,i,a.data,c,a.message,all_slotted,z,incomplete_features,f)}});var W=function(a,b,c){P.call(this,a,b,c),this.painter=f.VariantPainter,this.summary_draw_height=30,this.left_offset=30};l(W.prototype,D.prototype,P.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(D.prototype.config_params,[{key:"color",label:"Histogram color",type:"color"},{key:"show_sample_data",label:"Show sample data",type:"bool",default_value:!0},{key:"show_labels",label:"Show summary and sample labels",type:"bool",default_value:!0},{key:"summary_height",label:"Locus summary height",type:"float",default_value:20},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,"Histogram",d,e);var f=this.view,g=new this.painter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c,function(a){return f.get_base_color(a)});return g.draw(b,b.canvas.width,b.canvas.height,e),new L(this,d,e,b.canvas,a.data)},get_canvas_height:function(a,b){if("bigwig"===a.dataset_type)return this.summary_draw_height;var c=this.dataset.get_metadata("sample_names")?this.dataset.get_metadata("sample_names").length:0;0===c&&0!==a.data.length&&(c=a.data[0][7].match(/,/g),c=null===c?1:c.length+1);var d=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return d.get_required_height(c)},predraw_init:function(){var a=[O.prototype.predraw_init.call(this)];return this.dataset.get_metadata("sample_names")||a.push(this.dataset.fetch()),a},postdraw_actions:function(b,c,d,e){P.prototype.postdraw_actions.call(this,b,c,d,e);var f=a.filter(b,function(a){return a instanceof M}),g=this.dataset.get_metadata("sample_names");if(0===f.length&&this.config.get_value("show_labels")&&g&&g.length>1){var h;if(0===this.container_div.find(".yaxislabel.variant").length&&(h=this.config.get_value("summary_height")/2,this.tiles_div.prepend($("
").text("Summary").addClass("yaxislabel variant top").css({"font-size":h+"px",top:(this.config.get_value("summary_height")-h)/2+"px"})),this.config.get_value("show_sample_data"))){var i=g.join("
");this.tiles_div.prepend($("
").html(i).addClass("yaxislabel variant top sample").css({top:this.config.get_value("summary_height")}))}h=("Squish"===this.mode?5:10)+"px",$(this.tiles_div).find(".sample").css({"font-size":h,"line-height":h}),$(this.tiles_div).find(".yaxislabel").css("color",this.config.get_value("label_color"))}else this.container_div.find(".yaxislabel.variant").remove()}});var X=function(a,b,c){V.call(this,a,b,c),this.painter=f.ReadPainter,this.update_icons()};l(X.prototype,D.prototype,P.prototype,V.prototype,{config_params:a.union(D.prototype.config_params,[{key:"block_color",label:"Histogram color",type:"color"},{key:"detail_block_color",label:"Sense strand block color",type:"color",default_value:"#AAAAAA"},{key:"reverse_strand_color",label:"Antisense strand block color",type:"color",default_value:"#DDDDDD"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_insertions",label:"Show insertions",type:"bool",default_value:!1},{key:"show_differences",label:"Show differences only",type:"bool",default_value:!0},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"min_value",label:"Histogram minimum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})}});var Y={CompositeTrack:R,DrawableGroup:F,DiagonalHeatmapTrack:U,FeatureTrack:V,LineTrack:T,ReadTrack:X,VariantTrack:W,VcfTrack:W},Z=function(a,b,c){if("copy"in a)return a.copy(c);var d=a.obj_type;return d||(d=a.track_type),new Y[d](b,c,a)};return{TracksterView:G,DrawableGroup:F,LineTrack:T,FeatureTrack:V,DiagonalHeatmapTrack:U,ReadTrack:X,VariantTrack:W,CompositeTrack:R,object_from_template:Z}}); +},init:function(a){var b=this;if(b.enabled=!1,b.tile_cache.clear(),b.data_manager.clear(),b.content_div.children().remove(),b.container_div.removeClass("nodata error pending"),b.tiles_div=$("
").addClass("tiles").appendTo(b.content_div),b.dataset.id){var c=$.Deferred(),d={hda_ldda:b.dataset.get("hda_ldda"),data_type:this.dataset_check_type,chrom:b.view.chrom,retry:a};return $.getJSON(this.dataset.url(),d,function(a){if(a&&"error"!==a&&"error"!==a.kind)"no converter"===a?(b.container_div.addClass("error"),b.show_message(x)):"no data"===a||void 0!==a.data&&(null===a.data||0===a.data.length)?(b.container_div.addClass("nodata"),b.show_message(y)):"pending"===a?(b.container_div.addClass("pending"),b.show_message(z),setTimeout(function(){b.init()},b.data_query_wait)):("data"===a||"data"===a.status)&&(a.valid_chroms&&(b.valid_chroms=a.valid_chroms,b.update_icons()),b.tiles_div.text(B),b.view.chrom?(b.tiles_div.text(""),b.tiles_div.css("height",b.visible_height_px+"px"),b.enabled=!0,$.when.apply($,b.predraw_init()).done(function(){c.resolve(),b.container_div.removeClass("nodata error pending"),b.request_draw()})):c.resolve());else{b.container_div.addClass("error");var d=b.show_message(w);a.message&&(d.append($("").text("View error").click(function(){Galaxy.modal.show({title:"Trackster Error",body:"
"+a.message+"
",buttons:{Close:function(){Galaxy.modal.hide()}}})})),d.append($("").text(" ")),d.append($("").text("Try again").click(function(){b.init(!0)})))}}),this.update_icons(),c}},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(c&&void 0!==c.min&&void 0!==c.max){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_default_value("min_value",d),a.config.set_default_value("max_value",e),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},get_drawables:function(){return this}});var Q=function(c,d,e){P.call(this,c,d,e);var f=this;if(p(f.container_div,f.drag_handle_class,".group",f),this.filters_manager=new g.FiltersManager(this,"filters"in e?e.filters:null),this.data_manager.set("filters_manager",this.filters_manager),this.filters_available=!1,this.tool=e.tool?new I(a.extend(e.tool,{track:this,tool_state:e.tool_state})):null,this.tile_cache=new b.Cache(C),this.left_offset=0,this.header_div&&(this.set_filters_manager(this.filters_manager),this.tool)){var h=new K({model:this.tool});h.render(),this.dynamic_tool_div=h.$el,this.header_div.after(this.dynamic_tool_div)}this.tiles_div=$("
").addClass("tiles").appendTo(this.content_div),this.config.get_value("content_visible")||this.tiles_div.hide(),this.overlay_div=$("
").addClass("overlay").appendTo(this.content_div),e.mode&&this.change_mode(e.mode)};m(Q.prototype,E.prototype,P.prototype,{action_icons_def:P.prototype.action_icons_def.concat([{name:"show_more_rows_icon",title:"To minimize track height, not all feature rows are displayed. Click to display more rows.",css_class:"exclamation",on_click_fn:function(a){$(".tooltip").remove(),a.slotters[a.view.resolution_px_b].max_rows*=2,a.request_draw({clear_tile_cache:!0})},hide:!0}]),copy:function(a){var b=this.to_dict();m(b,{data_manager:this.data_manager});var c=new this.constructor(this.view,a,b);return c.change_mode(this.mode),c.enabled=this.enabled,c},set_filters_manager:function(a){this.filters_manager=a,this.header_div.after(this.filters_manager.parent_div)},to_dict:function(){return{track_type:this.get_type(),dataset:{id:this.dataset.id,hda_ldda:this.dataset.get("hda_ldda")},prefs:this.config.to_key_value_dict(),mode:this.mode,filters:this.filters_manager.to_dict(),tool_state:this.tool?this.tool.state_dict():{}}},set_min_max:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(b){var c=b.data;if(isNaN(parseFloat(a.config.get_value("min_value")))||isNaN(parseFloat(a.config.get_value("max_value")))){var d=c.min,e=c.max;d=Math.floor(Math.min(0,Math.max(d,c.mean-2*c.sd))),e=Math.ceil(Math.max(0,Math.min(e,c.mean+2*c.sd))),a.config.set_value("min_value",d),a.config.set_value("max_value",e)}})},change_mode:function(a){var b=this;return b.mode=a,b.config.set_value("mode",a),"Auto"===a&&this.data_manager.clear(),b.request_draw({clear_tile_cache:!0}),this.action_icons.mode_icon.attr("title","Set display mode (now: "+b.mode+")"),b},update_icons:function(){var a=this;a.action_icons.filters_icon.toggle(a.filters_available),a.action_icons.tools_icon.toggle(null!==a.tool),a.action_icons.param_space_viz_icon.toggle(null!==a.tool)},_gen_tile_cache_key:function(a,b){return a+"_"+b},request_draw:function(a){a&&a.clear_tile_cache&&this.tile_cache.clear(),this.view.request_redraw(a,this)},before_draw:function(){this.max_height_px=0},_draw:function(c){if(this.can_draw()){var d=c&&c.clear_after,e=this.view.low,f=this.view.high,g=this.view.container.width(),h=this.view.resolution_px_b,i=1/h;this.is_overview&&(e=this.view.max_low,f=this.view.max_high,h=g/(view.max_high-view.max_low),i=1/h),this.before_draw(),this.tiles_div.children().addClass("remove");for(var j,k,l=Math.floor(t*i),m=Math.floor(e/l),n=[],o=[];f>m*l;)j=new b.GenomeRegion({chrom:this.view.chrom,start:m*l,end:Math.min((m+1)*l,this.view.max_high)}),k=this.draw_helper(j,h,c),n.push(k),$.when(k).then(function(a){o.push(a)}),m+=1;d||this.tiles_div.children(".remove").removeClass("remove").remove();var p=this;$.when.apply($,n).then(function(){p.tiles_div.children(".remove").remove(),o=a.filter(o,function(a){return null!==a}),0!==o.length&&p.postdraw_actions(o,g,h,d)})}},_add_yaxis_label:function(a,b){var c=this,d="max"===a?"top":"bottom",e="max"===a?"max":"min",f="max"===a?"max_value":"min_value",g=this.container_div.find(".yaxislabel."+d),h=l(c.config.get_value(f),1);b=b||function(){c.request_draw({clear_tile_cache:!0})},0!==g.length?g.text(h):(g=$("
").text(h).make_text_editable({num_cols:12,on_finish:function(a){$(".tooltip").remove(),c.config.set_value(f,l(a,1)),b()},help_text:"Set "+e+" value"}).addClass("yaxislabel "+d).css("color",this.config.get_value("label_color")),this.container_div.prepend(g))},postdraw_actions:function(b,c,d){var e=a.filter(b,function(a){return a instanceof N});if(e.length>0){this.max_height_px=0;var f=this;a.each(b,function(a){a instanceof N||(a.html_elt.remove(),f.draw_helper(a.region,d,{force:!0,mode:"Coverage"}))}),f._add_yaxis_label("max")}else{this.container_div.find(".yaxislabel").remove();var g=a.find(b,function(a){return a.has_icons});g&&a.each(b,function(a){a.has_icons||a.html_elt.css("padding-top",q)})}},get_mode:function(){return this.mode},update_auto_mode:function(){},_get_drawables:function(){return[this]},draw_helper:function(b,c,e){e||(e={});var f=e.force,g=e.mode||this.mode,h=1/c,i=this,j=this._get_drawables(),k=this._gen_tile_cache_key(c,b),l=function(a){return a&&"track"in a},m=f?void 0:i.tile_cache.get_elt(k);if(m)return l(m)&&i.show_tile(m,c),m;if(e.data_fetch===!1)return null;var n=function(){var c=a.find(D,function(a){return a===g})?"Coverage":g,d=a.map(j,function(a){return a.data_manager.get_data(b,c,h,i.data_url_extra_params)});return view.reference_track&&d.push(view.reference_track.data_manager.get_data(b,g,h,view.reference_track.data_url_extra_params)),d},o=$.Deferred();return i.tile_cache.set_elt(k,o),$.when.apply($,n()).then(function(){var f,g=n(),h=g;if(a.find(g,function(a){return d.is_deferred(a)}))return i.tile_cache.set_elt(k,void 0),void $.when(i.draw_helper(b,c,e)).then(function(a){o.resolve(a)});view.reference_track&&(f=view.reference_track.data_manager.subset_entry(g.pop(),b));var l=[],m=[];a.each(j,function(a,b){var d=a.mode,e=h[b];"Auto"===d&&(d=a.get_mode(e),a.update_auto_mode(d)),l.push(d),m.push(a.get_canvas_height(e,d,c,t))});var p,q=i.view.canvas_manager.new_canvas(),r=b.get("start"),s=b.get("end"),t=Math.ceil((s-r)*c)+i.left_offset,u=a.max(m);q.width=t,q.height=e.height||u;var v=q.getContext("2d");v.translate(i.left_offset,0),j.length>1&&(v.globalAlpha=.5,v.globalCompositeOperation="source-over"),a.each(j,function(a,d){p=a.draw_tile(h[d],v,l[d],b,c,f)}),void 0!==p&&(i.tile_cache.set_elt(k,p),i.show_tile(p,c)),o.resolve(p)}),o},get_canvas_height:function(){return this.visible_height_px},_draw_line_track_tile:function(b,c,d,e,g){-1!==[void 0,null].indexOf(this.config.get_value("min_value"))&&this.config.set_value("min_value",0),-1!==[void 0,null,0].indexOf(this.config.get_value("max_value"))&&this.config.set_value("max_value",a.max(a.map(b.data,function(a){return a[1]}))||0);var h=c.canvas,i=new f.LinePainter(b.data,e.get("start"),e.get("end"),this.config.to_key_value_dict(),d);return i.draw(c,h.width,h.height,g),new N(this,e,g,h,b.data)},draw_tile:function(){},show_tile:function(a,b){var c=a.html_elt;a.predisplay_actions();var d=Math.round((a.low-(this.is_overview?this.view.max_low:this.view.low))*b);this.left_offset&&(d-=this.left_offset),c.css("left",d),c.hasClass("remove")?c.removeClass("remove"):this.tiles_div.append(c),c.css("height","auto"),this.max_height_px=Math.max(this.max_height_px,c.height()-2),c.parent().children().css("height",this.max_height_px+"px");var e=this.max_height_px;0!==this.visible_height_px&&(e=Math.min(this.max_height_px,this.visible_height_px)),this.tiles_div.css("height",e+"px")},tool_region_and_parameters_str:function(b){var c=this,d=void 0!==b?b.toString():"all",e=a.values(c.tool.get_inputs_dict()).join(", ");return" - region=["+d+"], parameters=["+e+"]"},data_and_mode_compatible:function(a,b){return"Auto"===b?!0:"Coverage"===b?"bigwig"===a.dataset_type:"bigwig"===a.dataset_type||"no_detail"===a.extra_info?!1:!0},can_subset:function(a){return a.message||"no_detail"===a.extra_info?!1:"bigwig"===a.dataset_type?a.data[1][0]-a.data[0][0]===1:!0},init_for_tool_data:function(){this.data_manager.set("data_type","raw_data"),this.data_query_wait=1e3,this.dataset_check_type="state"}});var R=function(a,b){P.call(this,a,b,{resize:!1,header:!1}),this.container_div.addClass("label-track")};m(R.prototype,P.prototype,{init:function(){this.enabled=!0},predraw_init:function(){},_draw:function(){for(var a=this.view,b=a.high-a.low,c=Math.floor(Math.pow(10,Math.floor(Math.log(b)/Math.log(10)))),e=Math.floor(a.low/c)*c,f=this.view.container.width(),g=$("
").addClass("label-container");e").addClass("pos-label").text(d.commatize(e)).css({left:h})),e+=c}this.content_div.children(":first").remove(),this.content_div.append(g)}});var S=function(b,c,d){if(Q.call(this,b,c,d),this.drawables=[],"drawables"in d){for(var e,f=0;fthis.left_offset&&(this.left_offset=e.left_offset);this.enabled=!0}a.each(this.drawables,function(a){(a instanceof W||a instanceof Y)&&a.change_mode("Coverage")}),this.update_icons(),this.obj_type="CompositeTrack"};m(S.prototype,Q.prototype,{display_modes:D,config_params:a.union(E.prototype.config_params,[{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),action_icons_def:[{name:"composite_icon",title:"Show individual tracks",css_class:"layers-stack",on_click_fn:function(a){$(".tooltip").remove(),a.show_group()}}].concat(Q.prototype.action_icons_def),to_dict:F.prototype.to_dict,add_drawable:F.prototype.add_drawable,unpack_drawables:F.prototype.unpack_drawables,config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},on_resize:function(){var b=this.visible_height_px;a.each(this.drawables,function(a){a.visible_height_px=b}),P.prototype.on_resize.call(this)},change_mode:function(a){Q.prototype.change_mode.call(this,a);for(var b=0;be&&(e=f)}for(d=0;dthis.view.canvas_manager.char_width_px?(this.tiles_div.show(),d=!0,f=Q.prototype.draw_helper.call(this,a,b,c)):(d=!1,this.tiles_div.hide()),e!==d&&this.view.resize_viewport(),f},can_subset:function(){return!0},draw_tile:function(a,b,c,d,e){var f=this.data_manager.subset_entry(a,d),g=f.data,h=b.canvas;b.font=b.canvas.manager.default_font,b.textAlign="center";for(var i=0,j=g.length;j>i;i++)b.fillStyle=this.view.get_base_color(g[i]),b.fillText(g[i],Math.floor(i*e),10);return new M(this,d,e,h,f)}});var U=function(a,b,c){this.mode="Histogram",Q.call(this,a,b,c),this.data_manager=new k.BBIDataManager({dataset:this.dataset})};m(U.prototype,E.prototype,Q.prototype,{display_modes:D,config_params:a.union(E.prototype.config_params,[{key:"color",label:"Color",type:"color"},{key:"min_value",label:"Min Value",type:"float",default_value:void 0},{key:"max_value",label:"Max Value",type:"float",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:30,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},before_draw:function(){},draw_tile:function(a,b,c,d,e){return this._draw_line_track_tile(a,b,c,d,e)},can_subset:function(a){return a.data[1][0]-a.data[0][0]===1},postdraw_actions:function(){this._add_yaxis_label("max"),this._add_yaxis_label("min")}});var V=function(a,b,c){this.mode="Heatmap",Q.call(this,a,b,c)};m(V.prototype,E.prototype,Q.prototype,{display_modes:["Heatmap"],config_params:a.union(E.prototype.config_params,[{key:"pos_color",label:"Positive Color",type:"color",default_value:"#FF8C00"},{key:"neg_color",label:"Negative Color",type:"color",default_value:"#4169E1"},{key:"min_value",label:"Min Value",type:"int",default_value:void 0},{key:"max_value",label:"Max Value",type:"int",default_value:void 0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:500,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},predraw_init:function(){var a=this;return $.getJSON(a.dataset.url(),{data_type:"data",stats:!0,chrom:a.view.chrom,low:0,high:a.view.max_high,hda_ldda:a.dataset.get("hda_ldda")},function(a){a.data})},draw_tile:function(a,b,c,d,e){var g=b.canvas,h=new f.DiagonalHeatmapPainter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c);return h.draw(b,g.width,g.height,e),new M(this,d,e,g,a.data)}});var W=function(a,b,c){Q.call(this,a,b,c),this.container_div.addClass("feature-track"),this.summary_draw_height=30,this.slotters={},this.start_end_dct={},this.left_offset=200,this.set_painter_from_config()};m(W.prototype,E.prototype,Q.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(E.prototype.config_params,[{key:"block_color",label:"Block color",type:"color"},{key:"reverse_strand_color",label:"Antisense strand color",type:"color"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0,help:"Show the number of items in each bin when drawing summary histogram"},{key:"min_value",label:"Histogram minimum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"connector_style",label:"Connector style",type:"select",default_value:"fishbones",options:[{label:"Line with arrows",value:"fishbone"},{label:"Arcs",value:"arcs"}]},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.set_painter_from_config(),this.request_draw({clear_tile_cache:!0})},set_painter_from_config:function(){this.painter="arcs"===this.config.get_value("connector_style")?f.ArcLinkedFeaturePainter:f.LinkedFeaturePainter},postdraw_actions:function(b,c,d,e){Q.prototype.postdraw_actions.call(this,b,c,d,e);var f,g=this,h=a.filter(b,function(a){return a instanceof N});if(0===h.length){var i={};a.each(a.pluck(b,"incomplete_features"),function(b){a.each(b,function(a){i[a[0]]=a})});var j=this;a.each(b,function(b){var c=a.omit(i,a.map(b.incomplete_features,function(a){return a[0]}));if(c=a.omit(c,a.keys(b.other_tiles_features_drawn)),0!==a.size(c)){var d={data:a.values(c)},e=j.view.canvas_manager.new_canvas(),f=e.getContext("2d");e.height=Math.max(b.canvas.height,j.get_canvas_height(d,b.mode,b.w_scale,100)),e.width=b.canvas.width,f.drawImage(b.canvas,0,0),f.translate(g.left_offset,0);var h=j.draw_tile(d,f,b.mode,b.region,b.w_scale,b.seq_data);$(b.canvas).replaceWith($(h.canvas)),b.canvas=e,a.extend(b.other_tiles_features_drawn,i)}})}if(g.filters_manager){var k,l=g.filters_manager.filters;for(k=0;ks?"Squish":"Pack",mode},get_canvas_height:function(a,b,c,d){if("Coverage"===b||"bigwig"===a.dataset_type)return this.summary_draw_height;var e=this.incremental_slots(c,a.data,b),f=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return Math.max(this.min_height_px,f.get_required_height(e,d))},draw_tile:function(a,b,c,d,e,f,g){var h=this,i=b.canvas,j=d.get("start"),k=d.get("end"),l=this.left_offset;if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,c,d,e);var m=[],n=this.slotters[e].slots;if(all_slotted=!0,a.data)for(var o=this.filters_manager.filters,p=0,q=a.data.length;q>p;p++){for(var r,s=a.data[p],t=!1,u=0,v=o.length;v>u;u++)if(r=o[u],r.update_attrs(s),!r.keep(s)){t=!0;break}t||(m.push(s),s[0]in n||(all_slotted=!1))}var w=this.filters_manager.alpha_filter?new L(this.filters_manager.alpha_filter):null,x=this.filters_manager.height_filter?new L(this.filters_manager.height_filter):null,y=new this.painter(m,j,k,this.config.to_key_value_dict(),c,w,x,f,function(a){return h.view.get_base_color(a)}),z=null;if(b.fillStyle=this.config.get_value("block_color"),b.font=b.canvas.manager.default_font,b.textAlign="right",a.data){var A=y.draw(b,i.width,i.height,e,n);z=A.feature_mapper,incomplete_features=A.incomplete_features,z.translation=-l}return g?void 0:new O(h,d,e,i,a.data,c,a.message,all_slotted,z,incomplete_features,f)}});var X=function(a,b,c){Q.call(this,a,b,c),this.painter=f.VariantPainter,this.summary_draw_height=30,this.left_offset=30};m(X.prototype,E.prototype,Q.prototype,{display_modes:["Auto","Coverage","Dense","Squish","Pack"],config_params:a.union(E.prototype.config_params,[{key:"color",label:"Histogram color",type:"color"},{key:"show_sample_data",label:"Show sample data",type:"bool",default_value:!0},{key:"show_labels",label:"Show summary and sample labels",type:"bool",default_value:!0},{key:"summary_height",label:"Locus summary height",type:"float",default_value:20},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})},draw_tile:function(a,b,c,d,e){if("bigwig"===a.dataset_type)return this._draw_line_track_tile(a,b,"Histogram",d,e);var f=this.view,g=new this.painter(a.data,d.get("start"),d.get("end"),this.config.to_key_value_dict(),c,function(a){return f.get_base_color(a)});return g.draw(b,b.canvas.width,b.canvas.height,e),new M(this,d,e,b.canvas,a.data)},get_canvas_height:function(a,b){if("bigwig"===a.dataset_type)return this.summary_draw_height;var c=this.dataset.get_metadata("sample_names")?this.dataset.get_metadata("sample_names").length:0;0===c&&0!==a.data.length&&(c=a.data[0][7].match(/,/g),c=null===c?1:c.length+1);var d=new this.painter(null,null,null,this.config.to_key_value_dict(),b);return d.get_required_height(c)},predraw_init:function(){var a=[P.prototype.predraw_init.call(this)];return this.dataset.get_metadata("sample_names")||a.push(this.dataset.fetch()),a},postdraw_actions:function(b,c,d,e){Q.prototype.postdraw_actions.call(this,b,c,d,e);var f=a.filter(b,function(a){return a instanceof N}),g=this.dataset.get_metadata("sample_names");if(0===f.length&&this.config.get_value("show_labels")&&g&&g.length>1){var h;if(0===this.container_div.find(".yaxislabel.variant").length&&(h=this.config.get_value("summary_height")/2,this.tiles_div.prepend($("
").text("Summary").addClass("yaxislabel variant top").css({"font-size":h+"px",top:(this.config.get_value("summary_height")-h)/2+"px"})),this.config.get_value("show_sample_data"))){var i=g.join("
");this.tiles_div.prepend($("
").html(i).addClass("yaxislabel variant top sample").css({top:this.config.get_value("summary_height")}))}h=("Squish"===this.mode?5:10)+"px",$(this.tiles_div).find(".sample").css({"font-size":h,"line-height":h}),$(this.tiles_div).find(".yaxislabel").css("color",this.config.get_value("label_color"))}else this.container_div.find(".yaxislabel.variant").remove()}});var Y=function(a,b,c){W.call(this,a,b,c),this.painter=f.ReadPainter,this.update_icons()};m(Y.prototype,E.prototype,Q.prototype,W.prototype,{config_params:a.union(E.prototype.config_params,[{key:"block_color",label:"Histogram color",type:"color"},{key:"detail_block_color",label:"Sense strand block color",type:"color",default_value:"#AAAAAA"},{key:"reverse_strand_color",label:"Antisense strand block color",type:"color",default_value:"#DDDDDD"},{key:"label_color",label:"Label color",type:"color",default_value:"black"},{key:"show_insertions",label:"Show insertions",type:"bool",default_value:!1},{key:"show_differences",label:"Show differences only",type:"bool",default_value:!0},{key:"show_counts",label:"Show summary counts",type:"bool",default_value:!0},{key:"mode",type:"string",default_value:this.mode,hidden:!0},{key:"min_value",label:"Histogram minimum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"max_value",label:"Histogram maximum",type:"float",default_value:void 0,help:"clear value to set automatically"},{key:"height",type:"int",default_value:0,hidden:!0}]),config_onchange:function(){this.set_name(this.config.get_value("name")),this.request_draw({clear_tile_cache:!0})}});var Z={CompositeTrack:S,DrawableGroup:G,DiagonalHeatmapTrack:V,FeatureTrack:W,LineTrack:U,ReadTrack:Y,VariantTrack:X,VcfTrack:X},_=function(a,b,c){if("copy"in a)return a.copy(c);var d=a.obj_type;return d||(d=a.track_type),new Z[d](b,c,a)};return{TracksterView:H,DrawableGroup:G,LineTrack:U,FeatureTrack:W,DiagonalHeatmapTrack:V,ReadTrack:Y,VariantTrack:X,CompositeTrack:S,object_from_template:_}}); //# sourceMappingURL=../../../maps/viz/trackster/tracks.js.map \ No newline at end of file