-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflocking-no-jquery.min.js
13 lines (10 loc) · 274 KB
/
flocking-no-jquery.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
/*! Flocking 0.1.2 (June 21, 2015), Copyright 2015 Colin Clark | flockingjs.org */
!function(a,b){"object"==typeof exports?(a.flock=exports,b(exports,require("jquery"))):"function"==typeof define&&define.amd?define(["exports","jquery"],function(c,d){return a.flock=c,a.flock,b(c,d)}):(a.flock={},b(a.flock,jQuery))}(this,function(a,b){window.jQuery=b;var c=c||{},d=d||c;!function(a,b){"use strict";function c(a,b,c,d){for(var e=a[c],f=0;f<d.length-1;++f)e=d[f+1](e,c);b[c]=e}function d(a,c,d,e){for(var f=0;d>f;++f)a=e(a,c[f],f,b.makeArray(c));return a}function e(a,b,c,e){for(var f=[],g=0;g<a.length;++g){var h=d(a[g],b,c,e[g]);void 0!==h&&f.push(h)}return f}b.version="Infusion 2.0-SNAPSHOT",b.Error=Error,b.environment={fluid:b},b.global=b.global||window||{},b.invokeLater=function(a){return setTimeout(a,1)},b.defeatLogging=!0,b.activityTracing=!1,b.activityTrace=[];var f=/(%\w+)/g;b.renderOneActivity=function(a,b){for(var c=b===!0?[]:[" while "],d=a.message,e=f.lastIndex=0;;){var g=f.exec(d);if(!g)break;var h=g[1].substring(1);c.push(d.substring(e,g.index)),c.push(a.args[h]),e=f.lastIndex}return e<d.length&&c.push(d.substring(e)),c},b.renderActivity=function(a,c){return c=c||b.renderOneActivity,b.transform(a,c)},b.getActivityStack=function(){var a=b.globalThreadLocal();return a.activityStack||(a.activityStack=[]),a.activityStack},b.describeActivity=b.getActivityStack,b.logActivity=function(a){a=a||b.describeActivity();var c=b.renderActivity(a).reverse();b.log("Current activity: "),b.each(c,function(a){b.doLog(a)})},b.pushActivity=function(a,c,d){var e={type:a,message:c,args:d,time:(new Date).getTime()};b.activityTracing&&b.activityTrace.push(e),b.passLogLevel(b.logLevel.TRACE)&&b.doLog(b.renderOneActivity(e,!0));var f=b.getActivityStack();f.push(e)},b.popActivity=function(a){a=a||1,b.activityTracing&&b.activityTrace.push({pop:a});var c=b.getActivityStack(),d=c.length-a;c.length=0>d?0:d},b.FluidError=function(a){this.message=a,this.stack=(new Error).stack},b.FluidError.prototype=new Error,b.builtinFail=function(a,c,d){b.log.apply(null,[b.logLevel.FAIL,"ASSERTION FAILED: "].concat(c)),b.logActivity(d);var e=c.join("");if(a)throw new b.FluidError(e);e["Assertion failure - check console for details"]()};var g=[!1];b.fail=function(){var a=b.makeArray(arguments),c=b.makeArray(b.describeActivity());b.popActivity(c.length);var d=g[0];"boolean"==typeof d?b.builtinFail(d,a,c):"function"==typeof d&&d(a,c)},b.pushSoftFailure=function(a){"boolean"==typeof a||"function"==typeof a?g.unshift(a):-1===a&&g.shift()},b.notrycatch=!0,b.tryCatch=function(a,c,d){if(d=d||b.identity,b.notrycatch){var e=a();return d(),e}try{return a()}catch(f){if(!c)throw f;c(f)}finally{d()}},b.expect=function(a,c,d){b.transform(b.makeArray(c),function(c){"undefined"==typeof d[c]&&b.fail(a+" missing required parameter "+c)})},b.isLogging=function(){return h[0].priority>b.logLevel.IMPORTANT.priority},b.isLogLevel=function(a){return b.isMarker(a)&&void 0!==a.priority},b.passLogLevel=function(a){return a.priority<=h[0].priority},b.setLogging=function(a){var c;"boolean"==typeof a?c=b.logLevel[a?"INFO":"IMPORTANT"]:b.isLogLevel(a)?c=a:b.fail("Unrecognised fluid logging level ",a),h.unshift(c)},b.setLogLevel=b.setLogging,b.popLogging=function(){return 1===h.length?h[0]:h.shift()},b.doLog=function(a){var b=a.join("");"undefined"!=typeof console?console.debug?console.debug.apply(console,a):"function"==typeof console.log?console.log.apply(console,a):console.log(b):"undefined"!=typeof YAHOO?YAHOO.log(b):"undefined"!=typeof opera&&opera.postError(b)},b.log=function(){var a=b.makeArray(arguments),c=b.logLevel.INFO;if(b.isLogLevel(a[0])&&(c=a.shift()),b.passLogLevel(c)){var d=b.renderTimestamp(new Date)+": ",e=[d].concat(a);b.doLog(e)}},b.identity=function(a){return a},b.isValue=function(a){return void 0!==a&&null!==a},b.isPrimitive=function(a){var b=typeof a;return!a||"string"===b||"boolean"===b||"number"===b||"function"===b},b.isArrayable=function(a){return a&&(a.jquery||"[object Array]"===Object.prototype.toString.call(a))},b.isPlainObject=function(a){if(!a)return!1;var b=Object.prototype.toString.call(a);return"[object Array]"===b||"[object Object]"===b},b.isDOMNode=function(a){return a&&"number"==typeof a.nodeType},b.isDOMish=function(a){return b.isDOMNode(a)||a.jquery},b.isComponent=function(a){return a&&a.typeName&&a.id},b.freshContainer=function(a){return b.isArrayable(a)?[]:{}},b.copy=function(c){return b.isPrimitive(c)?c:a.extend(!0,b.freshContainer(c),c)},b.makeArray=function(a){var c=[];if(null!==a&&void 0!==a)if(b.isPrimitive(a)||"number"!=typeof a.length)c.push(a);else for(var d=0;d<a.length;++d)c[d]=a[d];return c},b.transform=function(a){var d=b.freshContainer(a);if(b.isArrayable(a))for(var e=0;e<a.length;++e)c(a,d,e,arguments);else for(var f in a)c(a,d,f,arguments);return d},b.each=function(a,c){if(b.isArrayable(a))for(var d=0;d<a.length;++d)c(a[d],d);else for(var e in a)c(a[e],e)},b.make_find=function(a){var c=a?!1:void 0;return function(d,e,f){var g;if(b.isArrayable(d)){for(var h=0;h<d.length;++h)if(g=e(d[h],h),g!==c)return a?d[h]:g}else for(var i in d)if(g=e(d[i],i),g!==c)return a?d[i]:g;return f}},b.find=b.make_find(!1),b.find_if=b.make_find(!0),b.accumulate=function(a,b,c){for(var d=0;d<a.length;++d)c=b(a[d],c,d);return c},b.remove_if=function(a,c,d){if(b.isArrayable(a))for(var e=a.length-1;e>=0;--e)c(a[e],e)&&(d&&d.unshift(a[e]),a.splice(e,1));else for(var f in a)c(a[f],f)&&(d&&(d[f]=a[f]),delete a[f]);return d||a},b.generate=function(a,b,c){for(var d=[],e=0;a>e;++e)d[e]=c?b(e):b;return d},b.iota=function(a,b){b=b||0;for(var c=[],d=0;a>d;++d)c[c.length]=b++;return c},b.getMembers=function(a,c){return b.transform(a,function(a){return b.get(a,c)})},b.filterKeys=function(c,d,e){return b.remove_if(a.extend({},c),function(b,c){return e^-1===a.inArray(c,d)})},b.censorKeys=function(a,c){return b.filterKeys(a,c,!0)},b.makeFlatten=function(a){return function(c){var d=[];return b.each(c,function(){d.push(arguments[a])}),d}},b.keys=b.makeFlatten(1),b.values=b.makeFlatten(0),b.contains=function(c,d){return c?b.isArrayable(c)?-1!==a.inArray(d,c):b.find(c,function(a){return d===a?!0:void 0}):void 0},b.keyForValue=function(a,c){return b.find(a,function(a,b){return c===a?b:void 0})},b.findKeyInObject=b.keyForValue,b.arrayToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0}),c},b.clear=function(a){if(b.isArrayable(a))a.length=0;else for(var c in a)delete a[c]},b.compareStringLength=function(a){return a?function(a,b){return a.length-b.length}:function(a,b){return b.length-a.length}},b.logLevelsSpec={FATAL:0,FAIL:5,WARN:10,IMPORTANT:12,INFO:15,TRACE:20},b.logLevel=b.transform(b.logLevelsSpec,function(a,b){return{type:"fluid.marker",value:b,priority:a}});var h=[b.logLevel.IMPORTANT];b.VALUE={type:"fluid.marker",value:"VALUE"},b.NO_VALUE={type:"fluid.marker",value:"NO_VALUE"},b.EXPAND={type:"fluid.marker",value:"EXPAND"},b.EXPAND_NOW={type:"fluid.marker",value:"EXPAND_NOW"},b.isMarker=function(a,b){return a&&"object"==typeof a&&"fluid.marker"===a.type?b?a.value===b.value:!0:!1},b.model={},b.model.copyModel=function(c,d){b.clear(c),a.extend(!0,c,d)},b.model.parseEL=function(a){return""===a?[]:String(a).split(".")},b.model.composePath=function(a,b){return""===a?b:""===b?a:a+"."+b},b.model.composeSegments=function(){return b.makeArray(arguments).join(".")},b.path=b.model.composeSegments,b.composePath=b.model.composePath,b.requireDataBinding=function(){b.fail("Please include DataBinding.js in order to operate complex model accessor configuration")},b.model.setWithStrategy=b.model.getWithStrategy=b.requireDataBinding,b.model.resolvePathSegment=function(a,b,c,d){return!d&&a.resolvePathSegment?a.resolvePathSegment(b):c&&void 0===a[b]?a[b]={}:a[b]},b.model.pathToSegments=function(a,c){var d=c&&c.parser?c.parser.parse:b.model.parseEL,e="number"==typeof a||"string"==typeof a?d(a):a;return e},b.model.accessImpl=function(a,c,d,e,f,g,h){var i=b.model.pathToSegments(c,e),j=0;f&&(j=f.length,i=f.concat(i));var k=d===b.NO_VALUE?0:1;return a=h(a,i,j,e,k),d===b.NO_VALUE||d===b.VALUE?g?{root:a,segs:i}:a:void(a[i[i.length-1]]=d)},b.model.accessSimple=function(a,c,d,e,f,g){return b.model.accessImpl(a,c,d,e,f,g,b.model.traverseSimple)},b.model.traverseSimple=function(a,c,d,e,f){for(var g=e,h=c.length-f,i=0;h>i;++i){if(!a)return a;var j=c[i];a=e&&e[j]?e[j]:b.model.resolvePathSegment(a,j,1===f,g),e=null}return a},b.model.setSimple=function(a,c,d,e,f){b.model.accessSimple(a,c,d,e,f,!1)},b.model.getSimple=function(a,c,d,e){return null===c||void 0===c||0===c.length?a:b.model.accessSimple(a,c,b.NO_VALUE,d,e,!1)},b.decodeAccessorArg=function(a){return a&&a!==b.model.defaultGetConfig&&a!==b.model.defaultSetConfig?"environment"===a.type?a.value:void 0:null},b.set=function(a,c,d,e,f){var g=b.decodeAccessorArg(e);void 0===g?b.model.setWithStrategy(a,c,d,e,f):b.model.setSimple(a,c,d,g,f)},b.get=function(a,c,d,e){var f=b.decodeAccessorArg(d);return void 0===f?b.model.getWithStrategy(a,c,d,e):b.model.accessImpl(a,c,b.NO_VALUE,f,null,!1,b.model.traverseSimple)},b.model.setBeanValue=b.set,b.model.getBeanValue=b.get,b.getGlobalValue=function(a,c){return a?(c=c||b.environment,b.get(b.global,a,{type:"environment",value:c})):void 0},b.bind=function(a,c,d){return a[c].apply(a,b.makeArray(d))},b.invokeGlobalFunction=function(a,c,d){var e=b.getGlobalValue(a,d);return e?e.apply(null,c||[]):void b.fail("Error invoking global function: "+a+" could not be located")},b.registerGlobalFunction=function(a,c,d){d=d||b.environment,b.set(b.global,a,c,{type:"environment",value:d})},b.setGlobalValue=b.registerGlobalFunction,b.registerNamespace=function(a,c){c=c||b.environment;var d=b.getGlobalValue(a,c);return d||(d={},b.setGlobalValue(a,d,c)),d},b.dumpEl=b.identity,b.renderTimestamp=b.identity,b.registerNamespace("fluid.event"),b.generateUniquePrefix=function(){return Math.floor(1e12*Math.random()).toString(36)+"-"};var i=b.generateUniquePrefix();b.fluidInstance=i;var j=1;b.allocateGuid=function(){return i+j++},b.event.identifyListener=function(a,c){return"string"==typeof a||a.$$fluid_guid||c||(a.$$fluid_guid=b.allocateGuid()),a.$$fluid_guid},b.event.impersonateListener=function(a,c){b.event.identifyListener(a),c.$$fluid_guid=a.$$fluid_guid},b.event.mapPriority=function(a,b){return null===a||void 0===a?b:"last"===a?Number.MAX_VALUE:"first"===a?-Number.MAX_VALUE:-a},b.priorityComparator=function(a,b){return a.priority-b.priority},b.event.sortListeners=function(a){var c=[];return b.each(a,function(a){for(var b,d=0;d<a.length;++d){var e=a[d];e.softNamespace||b||(b=e)}b?c.push(b):c=c.concat(a)}),c.sort(b.priorityComparator)},b.event.invokeListener=function(a,c){return"string"==typeof a&&(a=b.event.resolveListener({globalName:a})),a.apply(null,c)},b.event.resolveListener=function(a){if(a.globalName){var c=b.getGlobalValue(a.globalName);c?a=c:b.fail("Unable to look up name "+a.globalName+" as a global function")}return a},b.nameComponent=function(a){return a?"component with typename "+a.typeName+" and id "+a.id:"[unknown component]"},b.event.nameEvent=function(a,c){return c+" of "+b.nameComponent(a)},b.makeEventFirer=function(a){function c(c,f,g){if(c&&!d.destroyed){b.log(b.logLevel.TRACE,"Firing event "+e+" to list of "+c.length+" listeners");for(var h=0;h<c.length;++h){var i=c[h];i.listener=b.event.resolveListener(i.listener);var j=i.listener;if(!i.predicate||i.predicate(j,f)){var k,l=(g?g(j):j).apply(null,f);if((a.preventable&&l===!1||d.destroyed)&&(k=!1),void 0!==k)return k}}}}a=a||{};var d,e=a.name||"<anonymous>",f=b.event.identifyListener,g=function(){d.listeners={},d.byId={},d.sortedListeners=[],d.addListener=function(a,c,e,g,h){if(d.destroyed&&b.fail("Cannot add listener to destroyed event firer "+d.name),a){"string"==typeof a&&(a={globalName:a});var i=f(a);c=c||i;var j={listener:a,predicate:e,namespace:c,softNamespace:h,priority:b.event.mapPriority(g,d.sortedListeners.length)};d.byId[i]=j;var k=d.listeners[c]=b.makeArray(d.listeners[c]);k[h?"push":"unshift"](j),d.sortedListeners=b.event.sortListeners(d.listeners)}},d.addListener.apply(null,arguments)};return d={eventId:b.allocateGuid(),name:e,ownerId:a.ownerId,typeName:"fluid.event.firer",destroy:function(){d.destroyed=!0},addListener:function(){g.apply(null,arguments)},removeListener:function(a){if(d.listeners){var c,e,g;if("string"==typeof a){if(c=a,g=d.listeners[c],!g)return}else"function"==typeof a&&(e=f(a,!0),e||b.fail("Cannot remove unregistered listener function ",a," from event "+d.name));var h=d.byId[e],i=h&&h.softNamespace;c=c||h&&h.namespace||e,delete d.byId[e],g=d.listeners[c],g&&(i?b.remove_if(g,function(a){return a.listener.$$fluid_guid===e}):g.shift(),0===g.length&&delete d.listeners[c],d.sortedListeners=b.event.sortListeners(d.listeners))}},fireToListeners:function(a,b,d){return c(a,b,d)},fire:function(){return c(d.sortedListeners,arguments)}}},b.fireEvent=function(a,c,d){var e=b.get(a,c);e&&e.fire.apply(null,b.makeArray(d))},b.event.addListenerToFirer=function(a,c,d,e){if(e=e||b.identity,b.isArrayable(c))for(var f=0;f<c.length;++f)b.event.addListenerToFirer(a,c[f],d,e);else"function"==typeof c||"string"==typeof c?e(a).addListener(c,d):c&&"object"==typeof c&&e(a).addListener(c.listener,d||c.namespace,c.predicate,c.priority,c.softNamespace)},b.event.resolveListenerRecord=function(a){return{records:a}},b.expandOptions=function(a){b.fail("fluid.expandOptions could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor "+a)},b.mergeListeners=function(a,c,d){b.each(d,function(d,e){var f,g;if("{"===e.charAt(0))f=b.expandOptions(e,a),f||b.fail("Error in listener record: key "+e+' could not be looked up to an event firer - did you miss out "events." when referring to an event firer?');else{var h=e.indexOf(".");-1!==h&&(g=e.substring(h+1),e=e.substring(0,h)),c[e]||b.fail("Listener registered for event "+e+" which is not defined for this component"),f=c[e]}var i=b.event.resolveListenerRecord(d,a,e,g,!0);b.event.addListenerToFirer(f,i.records,g,i.adderWrapper)})},b.eventFromRecord=function(a,c,d){var e,f=a&&("string"!=typeof a||"{"===a.charAt(0));return f?b.event.resolveEvent?e=b.event.resolveEvent(d,c,a):b.fail("fluid.event.resolveEvent could not be loaded - please include FluidIoC.js in order to operate IoC-driven event with descriptor ",a):e=b.makeEventFirer({name:b.event.nameEvent(d,c),preventable:"preventable"===a,ownerId:d.id}),e},b.instantiateFirers=function(a,c){b.each(c.events,function(c,d){a.events[d]=b.eventFromRecord(c,d,a)})},b.mergeListenerPolicy=function(a,c,d){"string"!=typeof d&&b.fail("Error in listeners declaration - the keys in this structure must resolve to event names - got "+d+" from ",c);var e="{"!==d.charAt(0)&&-1!==d.indexOf(".");return e?c||a:b.arrayConcatPolicy(a,c)},b.makeMergeListenersPolicy=function(a){return function(c,d){return c=c||{},b.each(d,function(b,d){c[d]=a(c[d],b,d)}),c}},b.unique=function(a){return b.remove_if(a,function(b,c){return!b||c>0&&b===a[c-1]})},b.arrayConcatPolicy=function(a,c){return b.makeArray(a).concat(b.makeArray(c))},b.typeTag=function(a){return a?{typeName:a,id:b.allocateGuid()}:null},b.staticEnvironment=b.typeTag("fluid.staticEnvironment"),b.singleThreadLocal=function(a){var b=a();return function(a){return void 0===a?b:b=a}},b.threadLocal=b.singleThreadLocal,b.globalThreadLocal=b.threadLocal(function(){return b.typeTag("fluid.dynamicEnvironment")});var k=1,l={},m={},n=function(a,c,d){var e=!0;return d?e=1===c.length:c=b.makeArray(c),b.each(c,function(c){if(c&&!a.gradeHash[c]){var d="{"===c.charAt(0),f=(d?null:e?b.rawDefaults(c):b.getGradedDefaults(c))||{},g=l[c]||k-1;a.lastTick=Math.max(a.lastTick,g),a.gradeHash[c]=!0,a.gradeChain.push(c),a.optionsChain.push(f);for(var h=b.makeArray(f.gradeNames),i=0;i<h.length;++i){var j=h[i],m="autoInit"===j;e?m||n(a,j):a.gradeHash[j]||m||(a.gradeHash[j]=!0,a.gradeChain.push(j))}}}),a};b.resolveGradeStructure=function(a,c){var d={lastTick:0,gradeChain:[],gradeHash:{},optionsChain:[]};return n(d,(b.makeArray(c).reverse()||[]).concat([a]),!0)};var o={};b.gradeNamesToKey=function(a,b){return a+"|"+b.join("|")},b.hasGrade=function(a,c){return a&&a.gradeNames?b.contains(a.gradeNames,c):!1},b.resolveGrade=function(c,d,e){for(var f=b.resolveGradeStructure(d,e),g=f.optionsChain.reverse(),h={},i=0;i<g.length;++i)g[i]&&g[i].mergePolicy&&(h=a.extend(!0,h,g[i].mergePolicy));g=[h,{}].concat(g);var j=b.merge.apply(null,g);return j.gradeNames=f.gradeChain,b.hasGrade(c,"autoInit")&&j.gradeNames.push("autoInit"),{defaults:j,lastTick:f&&f.lastTick}},b.getGradedDefaults=function(a,c){c=b.makeArray(c);var d=b.gradeNamesToKey(a,c),e=o[d];if(e){for(var f=0,g=e.defaults.gradeNames||[],h=0;h<g.length;++h)f=Math.max(f,l[g[h]]||0);f>e.lastTick&&(b.log("Clearing cache for component "+a+" with gradeNames ",g),e=null)}if(!e){var i=b.rawDefaults(a);if(!i)return i;e=o[d]=b.resolveGrade(i,a,c)}return e.defaults},b.annotateListeners=function(a,c){c.listeners&&(c.listeners=b.transform(c.listeners,function(c){var d=b.makeArray(c);return b.transform(d,function(c){return b.isPrimitive(c)||(c.componentSource=a),c})}))},b.rawDefaults=function(a,c){if(void 0===c)return m[a];b.pushActivity("registerDefaults","registering defaults for grade %componentName with options %options",{componentName:a,options:c});var d=b.expandCompact?b.expandCompact(c):b.copy(c);b.annotateListeners(a,d),m[a]=d,l[a]=k++,b.popActivity()},b.doIndexDefaults=function(a,c,d,e){for(var f=b.makeArray(e.gradeNames),g=0;g<f.length;++g)if(!b.hasGrade(c,f[g]))return;for(var h="function"==typeof e.indexFunc?e.indexFunc:b.getGlobalValue(e.indexFunc),i=h(c)||[],j=0;j<i.length;++j)(d[i[j]]=d[i[j]]||[]).push(a)},b.indexDefaults=function(a,c){var d={};for(var e in m){var f=b.getGradedDefaults(e);b.doIndexDefaults(e,f,d,c)}return d},b.defaults=function(a,c){return void 0===c?b.getGradedDefaults(a):(c&&c.options&&b.fail("Probable error in options structure for "+a+' with option named "options" - perhaps you meant to write these options at top level in fluid.defaults? - ',c),b.rawDefaults(a,c),b.hasGrade(c,"autoInit")&&b.makeComponent(a,b.getGradedDefaults(a)),void 0)},b.makeComponent=function(c,d){if(d.gradeNames&&0!==d.gradeNames.length){if(!d.initFunction){for(var e=[],f=0;f<d.gradeNames.length;++f){var g=d.gradeNames[f],h=b.rawDefaults(g);h||"autoInit"===g||e.push(g)}b.fail(0===e.length?"Cannot autoInit component "+c+" which does not have an initFunction defined":"The grade hierarchy of component with typeName "+c+" is incomplete - it inherits from the following grade(s): "+e.join(", ")+" for which the grade definitions are corrupt or missing. Please check the files which might include these grades and ensure they are readable and have been loaded by this instance of Infusion")}}else b.fail("Cannot autoInit component "+c+" which does not have any gradeNames defined");var i=function(){return b.initComponent(c,arguments)},j=b.getGlobalValue(c);j&&a.extend(i,j),b.setGlobalValue(c,i)},b.makeComponents=function(a){b.each(a,function(a,c){var d={gradeNames:b.makeArray(a).concat(["autoInit"])};b.defaults(c,d)})},b.model.mergeModel=function(c,d){if(!b.isPrimitive(c)){var e=b.copy(d);a.extend(!0,d,c),a.extend(!0,d,e)}return d};var p={};b.derefMergePolicy=function(a){return(a?a["*"]:p)||p},b.compileMergePolicy=function(a){var c={},d={},e={builtins:c,defaultValues:d};return a?(b.each(a,function(a,f){var g={},h=!0;if("function"==typeof a)g.func=a;else if("object"==typeof a)g=a;else if(b.isDefaultValueMergePolicy(a))b.set(d,f,"{that}.options."+a),e.hasDefaults=!0,h=!1;else for(var i=a.split(/\s*,\s*/),j=0;j<i.length;++j)g[i[j]]=!0;h&&b.set(c,b.composePath(f,"*"),g)}),e):e},b.isDefaultValueMergePolicy=function(a){return"string"==typeof a&&-1===a.indexOf(",")&&!/replace|preserve|nomerge|noexpand/.test(a)},b.mergeOneImpl=function(a,c,d,e,f,g,h){var i=a,j=b.isPrimitive(a);return void 0!==c&&(f.func||null===c||!b.isPlainObject(c)||b.isDOMish(c)||c===b.VALUE||f.preserve||f.nomerge?(e[d]=void 0,i=f.func?f.func.call(null,a,c,h[g-1],h,g):b.isValue(a)&&f.preserve?b.model.mergeModel(a,c):c):j&&(i=a=b.freshContainer(c))),i},b.fetchMergeChildren=function(a,c,d,e,f,g){for(var h=b.derefMergePolicy(f),i=e.length-1;i>=0;--i){var j=e[i];if(void 0!==j&&(b.each(j,function(b,h){a.hasOwnProperty(h)||(d[c]=h,g.strategy(a,h,c+1,d,e,f))}),h.replace))break}return a},b.inEvaluationMarker={__CURRENTLY_IN_EVALUATION__:!0},b.destroyedMarker={__COMPONENT_DESTROYED__:!0},b.strategyRecursionBailout=50,b.makeMergeStrategy=function(a){var c=function(c,f,g,h,i,j){if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options merging, current path is ",h," at depth ",g,' - please protect components from merging using the "nomerge" merge policy'),b.isPrimitive(c))return void 0;b.isTracing&&b.tracing.pathCount.push(b.path(h.slice(0,g)));var k;if(c.hasOwnProperty(f)){if(k=c[f],!a.evaluateFully)return k}else c[f]=b.inEvaluationMarker;void 0===i&&(h=b.makeArray(h),i=e(a.sources,h,g-1,a.sourceStrategies),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var l,m,n,o=b.concreteTrundler(j,f),p=b.derefMergePolicy(o);p.replace?(l=1-i.length,m=0,n=-1):(l=0,m=i.length-1,n=1);for(var q,r=[],s=l;m>=s;++s){var t=n*s,u=a.sourceStrategies[t](i[t],f,g,h);if(void 0!==u&&(r[t]=u,void 0===k)){if(-1===n){q=c[f]=u;break}q=c[f]=b.mergeOneImpl(q,u,s,r,p,g,h,a)}}return void 0!==k&&(q=k),r.length>0&&(b.isPrimitive(q)||b.fetchMergeChildren(q,g,h,r,o,a)),void 0===k&&0===r.length&&delete c[f],q};return a.strategy=c,c},b.driveStrategy=function(a,c,d){c=b.makeArray(c);for(var e=0;e<c.length;++e){if(!a)return void 0;a=d(a,c[e],e+1,c)}return a},b.concreteTrundler=function(a,b){return a?a[b]:void 0},b.merge=function(a){var c=Array.prototype.slice.call(arguments,1),d=b.compileMergePolicy(a).builtins,e=b.makeMergeOptions(d,c,{});return e.initter(),e.target},b.simpleGingerBlock=function(a,c){var d={target:a,simple:!0,strategy:b.concreteTrundler,initter:b.identity,recordType:c,priority:b.mergeRecordTypes[c]};return d},b.makeMergeOptions=function(c,d,e){var f={mergePolicy:c,sources:d};return f=a.extend(f,e),f.target=f.target||b.freshContainer(f.sources[0]),f.sourceStrategies=f.sourceStrategies||b.generate(f.sources.length,b.concreteTrundler),f.initter=function(){f.evaluateFully=!0,b.fetchMergeChildren(f.target,0,[],f.sources,f.mergePolicy,f)},b.makeMergeStrategy(f),f},b.transformOptions=function(a,c){b.expect("Options transformation record",["transformer","config"],c);var d=b.getGlobalValue(c.transformer);return d.call(null,a,c.config)},b.findMergeBlocks=function(a,c){return b.remove_if(b.makeArray(a),function(a){return a.recordType!==c})},b.transformOptionsBlocks=function(a,c,d){b.each(d,function(d){var e=b.findMergeBlocks(a,d);b.each(e,function(a){a[a.simple?"target":"source"]=b.transformOptions(a.source,c)})})},b.deliverOptionsStrategy=b.identity,b.computeComponentAccessor=b.identity,b.computeDynamicComponents=b.identity,b.mergeRecordTypes={defaults:0,localOptions:50,defaultValueMerge:100,subcomponentRecord:200,distribution:300,user:500,demands:600},b.destroyValue=function(a,c){a&&b.model.applyChangeRequest(a,{type:"DELETE",path:c})},b.mergeComponentOptions=function(c,d,e,f){function g(){s=b.driveStrategy(l,"mergePolicy",q.strategy),s=a.extend({},b.rootMergePolicy,s),r=b.compileMergePolicy(s),a.extend(!0,j,r.builtins)}var h=b.rawDefaults(d),i=b.getGradedDefaults(d,h&&h.gradeNames?null:f.gradeNames),j={},k=[];k=k.concat(b.expandComponentOptions?b.expandComponentOptions(j,i,e,c):[b.simpleGingerBlock(i,"defaults"),b.simpleGingerBlock(e,"user")]);var l={},m=[],n=[],o={target:l,sourceStrategies:m},p=function(){k.sort(b.priorityComparator),m.length=0,n.length=0,b.each(k,function(a){m.push(a.strategy),n.push(a.target)})};p();var q=b.makeMergeOptions(j,n,o);q.mergeBlocks=k,q.updateBlocks=p,q.destroyValue=function(a){for(var c=0;c<k.length;++c)b.destroyValue(k[c].target,a);b.destroyValue(o.target,a)};var r,s;g(),r.hasDefaults&&(b.generateExpandBlock?(k.push(b.generateExpandBlock({options:r.defaultValues,recordType:"defaultValueMerge",priority:b.mergeRecordTypes.defaultValueMerge},c,{})),p()):b.fail("Cannot operate mergePolicy ",s," for component ",c," without including FluidIoC.js")),c.options=l;var t=b.driveStrategy(l,"nickName",q.strategy);c.nickName=t||b.computeNickName(c.typeName),b.driveStrategy(l,"gradeNames",q.strategy),b.deliverOptionsStrategy(c,l,q);var u=b.driveStrategy(l,"transformOptions",q.strategy);return u&&(b.transformOptionsBlocks(k,u,["user","subcomponentRecord"]),p()),b.computeComponentAccessor(c),o.target.mergePolicy||g(),q},b.defaults("fluid.function",{}),b.invokeGradedFunction=function(a,c){var d=b.defaults(a);d&&d.argumentMap&&b.hasGrade(d,"fluid.function")||b.fail("Cannot look up name "+a+" to a function with registered argumentMap - got defaults ",d);var e=[];return b.each(d.argumentMap,function(a,b){e[a]=c[b]}),b.invokeGlobalFunction(a,e)},b.lifecycleFunctions={preInitFunction:!0,postInitFunction:!0,finalInitFunction:!0},b.rootMergePolicy=a.extend({gradeNames:b.arrayConcatPolicy,distributeOptions:b.arrayConcatPolicy,transformOptions:"replace"},b.transform(b.lifecycleFunctions,function(){return b.mergeListenerPolicy})),b.defaults("fluid.littleComponent",{gradeNames:["autoInit"],initFunction:"fluid.initLittleComponent",mergePolicy:b.rootMergePolicy,argumentMap:{options:0}}),b.defaults("fluid.eventedComponent",{gradeNames:["fluid.littleComponent","autoInit"],events:{onCreate:null,onAttach:null,onClear:null,onDestroy:null,afterDestroy:null},mergePolicy:{listeners:b.makeMergeListenersPolicy(b.mergeListenerPolicy)}}),b.COMPONENT_OPTIONS={type:"fluid.marker",value:"COMPONENT_OPTIONS"},b.emptySubcomponent=function(a){var c=b.typeTag("fluid.emptySubcomponent");c.options=a||{},c.options.gradeNames=[c.typeName],a=b.makeArray(a);for(var d=0;d<a.length;++d)c[a[d]]=b.identity;return c},b.computeNickName=function(a){var c=b.model.parseEL(a);return c[c.length-1]},b.typeFount=function(a){var c=b.initLittleComponent("fluid.typeFount",a);return b.typeTag(c.options.targetTypeName)},b.initLittleComponent=function(a,c,d,e){var f=b.typeTag(a);d=d||{gradeNames:"fluid.littleComponent"},f.destroy=b.makeRootDestroy(f);var g=b.mergeComponentOptions(f,a,c,d),h=f.options,i=b.hasGrade(h,"fluid.eventedComponent");i&&(f.events={}),(e||b.identity)(f,h,g.strategy),b.computeDynamicComponents(f,g);for(var j=0;j<g.mergeBlocks.length;++j)g.mergeBlocks[j].initter();return g.initter(),delete h.mergePolicy,b.initLifecycleFunctions(f),b.fireEvent(h,"preInitFunction",f),i&&(b.instantiateFirers(f,h),b.mergeListeners(f,f.events,h.listeners)),b.hasGrade(h,"autoInit")||b.clearLifecycleFunctions(h),f},b.updateWithDefaultLifecycle=function(a,c,d){var e=d+"."+a.substring(0,a.length-"function".length),f=b.getGlobalValue(e);if("function"==typeof f){c=b.makeArray(c);var g=b.find(c,function(a){var b=a.listener||a;return b===f||b===e?!0:void 0});g||c.push(f)}return c},b.initLifecycleFunctions=function(a){var c=a.options.gradeNames||[];b.each(b.lifecycleFunctions,function(d,e){for(var f=a.options[e],g=c.length-1;g>=0;--g)"autoInit"!==c[g]&&(f=b.updateWithDefaultLifecycle(e,f,c[g]));f&&(a.options[e]=b.makeEventFirer({name:e,ownerId:a.id}),b.event.addListenerToFirer(a.options[e],f))})},b.clearLifecycleFunctions=function(a){b.each(b.lifecycleFunctions,function(b,c){delete a[c]}),delete a.initFunction},b.diagnoseFailedView=b.identity,b.makeRootDestroy=function(a){return function(){b.fireEvent(a,"events.onClear",[a,"",null]),b.doDestroy(a),b.fireEvent(a,"events.afterDestroy",[a,"",null])}},b.isDestroyed=function(a){return a.destroy===b.destroyedMarker},b.doDestroy=function(a,c,d){b.fireEvent(a,"events.onDestroy",[a,c||"",d]),a.destroy=b.destroyedMarker;for(var e in a.events)"afterDestroy"!==e&&"function"==typeof a.events[e].destroy&&a.events[e].destroy();a.applier&&a.applier.destroy()},b.resolveReturnedPath=b.identity,b.initComponent=function(a,c){var d=b.defaults(a);d.gradeNames||b.fail("Cannot initialise component "+a+" which has no gradeName registered");var e,f=[a].concat(b.makeArray(c));return b.pushActivity("initComponent","constructing component of type %componentName with arguments %initArgs",{componentName:a,initArgs:c}),e=b.invokeGlobalFunction(d.initFunction,f),b.diagnoseFailedView(a,e,d,f),b.fireEvent(e.options,"postInitFunction",e),b.initDependents&&b.initDependents(e),b.fireEvent(e.options,"finalInitFunction",e),b.clearLifecycleFunctions(e.options),b.fireEvent(e,"events.onCreate",e),b.popActivity(),b.resolveReturnedPath(e.options.returnedPath,e)?b.get(e,e.options.returnedPath):e},b.initSubcomponentImpl=function(a,c,d){var e;if("function"!=typeof c){var f="string"==typeof c?c:c.type;e="fluid.emptySubcomponent"===f?b.emptySubcomponent(c.options):b.invokeGlobalFunction(f,d)}else e=c.apply(null,d);return e},b.initSubcomponents=function(a,c,d){var e=a.options[c];if(e){var f=b.makeArray(e),g=-1,h=[];d=b.makeArray(d);for(var i=0;i<d.length;++i)d[i]===b.COMPONENT_OPTIONS&&(g=i);for(i=0;i<f.length;++i)e=f[i],-1!==g&&(d[g]=e.options),h[i]=b.initSubcomponentImpl(a,e,d);return h}},b.initSubcomponent=function(a,c,d){return b.initSubcomponents(a,c,d)[0]};var q="(?:[\\w\\u00c0-\\uFFFF*_-";b.simpleCSSMatcher={regexp:new RegExp("([#.]?)("+q+"]|\\\\.)+)","g"),charToTag:{"":"tag","#":"id",".":"clazz"}},b.IoCSSMatcher={regexp:new RegExp("([&#]?)("+q+"]|\\.)+)","g"),charToTag:{"":"context","&":"context","#":"id"}};var r=new RegExp("\\s*(>)?\\s*","g");b.parseSelector=function(c,d){var e=[];c=a.trim(c);var f=d.regexp;f.lastIndex=0;for(var g=0;;){for(var h=[],i=!0;;){var j=f.exec(c);if(!j)break;if(j.index!==g){if(!i)break;b.fail("Error in selector string - cannot match child selector expression starting at "+c.substring(g))}var k={},l=j[2],m=d.charToTag[j[1]];m&&(k[m]=l),h[h.length]=k,g=f.lastIndex,i=!1}r.lastIndex=g;var n={predList:h},o=r.exec(c);if(o&&o.index===g||b.fail("Error in selector string - can not match child selector expression at "+c.substring(g)),">"===o[1]&&(n.child=!0),e[e.length]=n,r.lastIndex>=c.length)break;g=r.lastIndex,f.lastIndex=r.lastIndex}return e},b.stringToRegExp=function(a,b){return new RegExp(a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),b)},b.stringTemplate=function(a,c){var d=b.keys(c);d=d.sort(b.compareStringLength());for(var e=0;e<d.length;++e){var f=d[e],g=b.stringToRegExp("%"+f,"g");a=a.replace(g,c[f])}return a},b.defaults("fluid.messageResolver",{gradeNames:["fluid.littleComponent","autoInit"],mergePolicy:{messageBase:"nomerge",parents:"nomerge"},resolveFunc:b.stringTemplate,parseFunc:b.identity,messageBase:{},parents:[]}),b.messageResolver.preInit=function(a){a.messageBase=a.options.parseFunc(a.options.messageBase),a.lookup=function(c){var d=b.messageResolver.resolveOne(a.messageBase,c);return void 0===d?b.find(a.options.parents,function(a){return a?a.lookup(c):void 0}):{template:d,resolveFunc:a.options.resolveFunc}},a.resolve=function(c,d){if(!c)return"[No messagecodes provided]";c=b.makeArray(c);var e=a.lookup(c);return e?e.resolveFunc(e.template,d):"[Message string for key "+c[0]+" not found]"}},b.messageResolver.resolveOne=function(a,b){for(var c=0;c<b.length;++c){var d=b[c],e=a[d];if(void 0!==e)return e}},b.messageLocator=function(a,c){var d=b.messageResolver({messageBase:a,resolveFunc:c});return function(a,b){return d.resolve(a,b)}}}(b,c);var c=c||{};!function(a,b){"use strict";function c(b,c){return b=a(b),b.trigger("fluid-"+c),b.triggerHandler(c),b[c](),b}b.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}};var d,e;a.browser||(navigator.userAgent.match(/Trident\/7\./)?e={msie:!0,version:11}:(d=b.uaMatch(navigator.userAgent),e={},d.browser&&(e[d.browser]=!0,e.version=d.version),e.chrome?e.webkit=!0:e.webkit&&(e.safari=!0)),a.browser=e);var f="fluid-scoped-data";b.getScopedData=function(b,c){var d=a(b).data(f);return d?d[c]:void 0},b.setScopedData=function(b,c,d){a(b).each(function(){var b=a.data(this,f)||{};
b[c]=d,a.data(this,f,b)})};var g=null;a(document).bind("focusin",function(a){g=a.target}),b.getLastFocusedElement=function(){return g};var h="enablement";b.enabled=function(c,d){return c=a(c),void 0===d?b.getScopedData(c,h)!==!1:(a("*",c).add(c).each(function(){void 0!==b.getScopedData(this,h)?b.setScopedData(this,h,d):/select|textarea|input/i.test(this.nodeName)&&a(this).prop("disabled",!d)}),void b.setScopedData(c,h,d))},b.initEnablement=function(a){b.setScopedData(a,h,!0)},b.resolveEventTarget=function(a){for(;a.originalEvent&&a.originalEvent.target;)a=a.originalEvent;return a.target},a.each(["focus","blur"],function(a,d){b[d]=function(a){return c(a,d)}})}(b,c);var c=c||{};!function(a,b){"use strict";b.dom=b.dom||{};var c=function(a){if(a.node.firstChild)return a.node=a.node.firstChild,a.depth+=1,a;for(;a.node;){if(a.node.nextSibling)return a.node=a.node.nextSibling,a;a.node=a.node.parentNode,a.depth-=1}return a};b.dom.iterateDom=function(a,d,e){for(var f,g={node:a,depth:0},h=a;null!==g.node&&g.depth>=0&&g.depth<b.dom.iterateDom.DOM_BAIL_DEPTH;){if(f=null,(1===g.node.nodeType||e)&&(f=d(g.node,g.depth)),f)if("delete"===f)g.node.parentNode.removeChild(g.node),g.node=h;else if("stop"===f)return g.node;h=g.node,g=c(g)}},b.dom.iterateDom.DOM_BAIL_DEPTH=256,b.dom.isContainer=function(a,b){for(;b;b=b.parentNode)if(a===b)return!0;return!1},b.dom.getElementText=function(a){for(var b=a.childNodes,c="",d=0;d<b.length;++d){var e=b[d];3===e.nodeType&&(c+=e.nodeValue)}return c}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";function c(d,e,f){var g,h=e+f.indentChars,i="function"==typeof d;if(null===d)g="null";else if(void 0===d)g="undefined";else if(d===b.SYNTHETIC_PROPERTY)g="[Synthetic property]";else if(b.isPrimitive(d)&&!i)g=JSON.stringify(d);else{if(-1!==a.inArray(d,f.stack))return"(CIRCULAR)";f.stack.push(d);var j,k=[];if(b.isArrayable(d))if(0===d.length)g="[]";else{for(j=0;j<d.length;++j)k[j]=c(d[j],h,f);g="[\n"+h+k.join(",\n"+h)+"\n"+e+"]"}else{j=0,g="{"+(i?" Function":"")+"\n";for(var l in d){var m=b.getSafeProperty(d,l);k[j++]=JSON.stringify(l)+": "+c(m,h,f)}g+=h+k.join(",\n"+h)+"\n"+e+"}"}f.stack.pop()}return g}b.renderTimestamp=function(a){var b=function(a,b){b||(b=2);var c=void 0===a?"":a.toString();return"00000".substring(5-b+c.length)+c};return b(a.getHours())+":"+b(a.getMinutes())+":"+b(a.getSeconds())+"."+b(a.getMilliseconds(),3)},b.isTracing=!1,b.registerNamespace("fluid.tracing"),b.tracing.pathCount=[],b.tracing.summarisePathCount=function(a){a=a||b.tracing.pathCount;for(var c={},d=0;d<a.length;++d){var e=a[d];c[e]?++c[e]:c[e]=1}var f=[];return b.each(c,function(a,b){f.push({path:b,count:a})}),f.sort(function(a,b){return b.count-a.count}),f},b.tracing.condensePathCount=function(a,c){a=b.makeArray(a);var d={};b.each(a,function(a){d[a]=0});var e=[];return b.each(c,function(c){var f=c.path;b.find(a,function(a){return 0===f.indexOf(a)?(d[a]+=c.count,!0):void 0})||e.push(c)}),b.each(d,function(a,b){e.unshift({path:b,count:a})}),e},b.detectStackStyle=function(a){var b="other",c={offset:0};return a.arguments?b="chrome":"undefined"!=typeof window&&window.opera&&a.stacktrace?b="opera10":a.stack?(b="firefox",c.offset=-1===a.stack.indexOf("Trace exception")?1:0):"undefined"==typeof window||!window.opera||"stacktrace"in a||(b="opera"),c.style=b,c},b.obtainException=function(){try{throw new Error("Trace exception")}catch(a){return a}};var d=b.detectStackStyle(b.obtainException());b.registerNamespace("fluid.exceptionDecoders"),b.decodeStack=function(){if("firefox"!==d.style)return null;var a=b.obtainException();return b.exceptionDecoders[d.style](a)},b.exceptionDecoders.firefox=function(a){var c=a.stack.replace(/(?:\n@:0)?\s+$/m,"").replace(/^\(/gm,"{anonymous}(").split("\n");return b.transform(c,function(a){var b=a.indexOf("@");return-1===b?[a]:[a.substring(b+1),a.substring(0,b)]})},b.getCallerInfo=function(a){a=(a||3)-d.offset;var c=b.decodeStack();return c?c[a][0]:null},b.generatePadding=function(a,b){for(var c="",d=0;b>d;++d)c+=a;return c},b.SYNTHETIC_PROPERTY={},b.getSafeProperty=function(a,c){var d=Object.getOwnPropertyDescriptor(a,c);return d&&!d.get?a[c]:b.SYNTHETIC_PROPERTY},b.prettyPrintJSON=function(d,e){return e=a.extend({indent:4,stack:[]},e),e.indentChars=b.generatePadding(" ",e.indent),c(d,"",e)},b.dumpEl=function(c){var d;if(!c)return"null";if(3===c.nodeType||8===c.nodeType)return"[data: "+c.data+"]";if(9===c.nodeType)return"[document: location "+c.location+"]";if(!c.nodeType&&b.isArrayable(c)){d="[";for(var e=0;e<c.length;++e)d+=b.dumpEl(c[e]),e<c.length-1&&(d+=", ");return d+"]"}return c=a(c),d=c.get(0).tagName,c.id&&(d+="#"+c.id),c.attr("class")&&(d+="."+c.attr("class")),d}}(b,c);var c=c||{};!function(a,b){"use strict";function c(a,b){var c=j[a]||[];a:for(var d=0;d<c.length;++d){for(var e=c[d],f=0;f<b.length;++f)if(e.contexts[f]!==b[f])continue a;return e.spec}}function d(a,c,d,e){for(var f=0;d>f;++f)a=e(a,c[f],f,b.makeArray(c));return a}b.visitComponentChildren=function(a,c,d,e,f){var g=b.getInstantiator(a);for(var h in a){var i=g.composePath(e,h),j=a[h];if(!(!b.isComponent(j)||d.visited&&d.visited[j.id])){if(d.visited&&(d.visited[j.id]=!0),c(j,h,i,e,f))return!0;d.flat||b.visitComponentChildren(j,c,d,i)}}},b.getMemberNames=function(a,c){var d=a.idToPath(c[c.length-1].id),e=b.model.parseEL(d);return e.unshift.apply(e,b.generate(c.length-e.length,"")),e};var e=function(a,c,d,e){e=e||{visited:{},flat:!0,instantiator:a};for(var f=b.getMemberNames(a,c),g=c.length-1;g>=0;--g){var h,i=c[g];if(i.typeName&&(e.visited[i.id]=!0,h=a.idToPath[i.id],d(i,f[g],h,h,g)))return;if(b.visitComponentChildren(i,d,e,h,g))return}};b.mountStrategy=function(a,b,c){var d=a.length;return function(b,e,f,g){if(!(f<=a.length)){for(var h=0;h<a.length;++h)if(g[h]!==a[h])return;return c(b,e,f-a.length,g.slice(d))}}},b.invokerFromRecord=function(a,c,d){b.pushActivity("makeInvoker","beginning instantiation of invoker with name %name and record %record as child of %that",{name:c,record:a,that:d});var e=b.makeInvoker(d,a,c);return b.popActivity(),e},b.memberFromRecord=function(a,c,d){var e=b.expandOptions(a,d,null,null,{freeRoot:!0});return e},b.recordStrategy=function(a,c,d,e,f,g){return g=g||[],{strategy:function(g,h,i){if(1===i){var j=b.driveStrategy(c,[e,h],d);if(void 0!==j){b.set(g,[h],b.inEvaluationMarker);var k=f(j,h,a);return b.set(g,[h],k),k}}},initter:function(){var f=b.driveStrategy(c,e,d)||{};for(var h in f)b.getForComponent(a,g.concat([h]))}}},b.instantiateFirers=function(a){var c=b.shadowForComponent(a),d=b.get(c,["eventStrategyBlock","initter"])||b.identity;d()},b.makeDistributionRecord=function(c,d,e,f,g,h,i){h=h||0,i=i||"distribution";var j=b.copy(b.get(d,e));b.each(g,function(a){b.model.applyChangeRequest(j,{path:a,type:"DELETE"})});var k={options:{}},l=b.isPrimitive(j);return b.model.applyChangeRequest(k,{path:f,type:l?"ADD":"MERGE",value:j}),a.extend(k,{contextThat:c,recordType:i,priority:b.mergeRecordTypes.distribution+h})},b.filterBlocks=function(c,d,e,f,g,h){var i=[],j=0;return b.each(d,function(d){var k=b.get(d.source,e);if(k){i.push(b.makeDistributionRecord(c,d.source,e,f,g,j++,d.recordType));var l=a.extend({},k);h&&b.model.applyChangeRequest(d.source,{path:e,type:"DELETE"}),b.each(g,function(a){var c=b.get(l,a);b.set(d.source,e.concat(a),c)})}}),i},b.matchIoCSelector=function(a,b,c,d,e){for(var f=b.length-1,g=a.length-1;;){for(var h=f===b.length-1||a[g].child,i=b[f],j=a[g],k=!0,l=0;l<j.predList.length;++l){var m=j.predList[l];if(m.context&&!c[f][m.context]&&d[f]!==m.context){k=!1;break}if(m.id&&i.id!==m.id){k=!1;break}}if(0===g&&f>e&&h&&(k=!1),k){if(0===g)return!0;--f,--g}else{if(h)return!1;--f}if(e>f)return!1}},b.noteCollectedDistribution=function(a,c,d){b.model.setSimple(a,["collectedDistributions",c,d.id],!0)},b.isCollectedDistribution=function(a,c,d){return b.model.getSimple(a,["collectedDistributions",c,d.id])},b.clearCollectedDistributions=function(a,c){b.model.applyChangeRequest(a,{path:["collectedDistributions",c],type:"DELETE"})},b.collectDistributions=function(a,c,d,e,f,g,h){var i=g[g.length-1];!b.isCollectedDistribution(c,i,d)&&b.matchIoCSelector(d.selector,e,f,g,h)&&(a.push.apply(a,d.blocks),b.noteCollectedDistribution(c,i,d))},b.registerCollectedClearer=function(a,c,d){!a.collectedClearer&&c&&(a.collectedClearer=function(){b.clearCollectedDistributions(c,d)})},b.receiveDistributions=function(a,c,d,e){var f=b.getInstantiator(a||e),g=f.getThatStack(a||e),h=b.getMemberNames(f,g),i=[],j=b.transform(g,function(a){return f.idToShadow[a.id]}),k=j[j.length-(a?1:2)],l=b.getMembers(j,"contextHash");a?(h.push(d),l.push(b.gradeNamesToHash(c)),g.push(e)):b.registerCollectedClearer(j[j.length-1],k,h[h.length-1]);for(var m=0;m<g.length-1;++m)b.each(j[m].distributions,function(a){b.collectDistributions(i,k,a,g,l,h,m)});return i},b.applyDistributions=function(a,c,d){var e=b.transform(c,function(c){return b.generateExpandBlock(c,a,d.mergePolicy)}),f=d.mergeOptions;return f.mergeBlocks.push.apply(f.mergeBlocks,e),f.updateBlocks(),e},b.parseExpectedOptionsPath=function(a,c){var d=b.model.parseEL(a);return d.length>1&&"options"!==d[0]&&b.fail("Error in options distribution path ",a," - only "+c+' paths beginning with "options" are supported'),d.slice(1)},b.isIoCSSSelector=function(a){return-1!==a.indexOf(" ")},b.pushDistributions=function(a,c,d){var e=b.shadowForComponent(a),f=b.allocateGuid(),g=e.distributions=e.distributions||[];return g.push({id:f,selector:c,blocks:d}),f},b.clearDistributions=function(a,c){var d=b.shadowForComponent(a);b.remove_if(d.distributions,function(a){return a.id===c})},b.extractSelectorHead=function(a){var b=a[0].predList,c=b[0].context;return b.length=0,c},b.undistributableOptions=["gradeNames","distributeOptions","returnedPath","argumentMap","initFunction","mergePolicy","progressiveCheckerOptions"],b.distributeOptions=function(a,c){var d=b.makeArray(b.driveStrategy(a.options,"distributeOptions",c));b.each(d,function(c){var d,e,f=b.parseContextReference(c.target);if(b.isIoCSSSelector(f.context)){e=b.parseSelector(f.context,b.IoCSSMatcher);var g=b.extractSelectorHead(e);"that"!==g&&b.fail('Downwards options distribution not supported from component other than "that"'),d=a}else d=b.resolveContext(f.context,a),d||b.fail("Error in options distribution record ",c," - could not resolve context selector {"+f.context+"} to a root component");var h,i=b.model.parseEL(f.path);if(void 0!==c.record)h=[b.makeDistributionRecord(a,c.record,[],i,[],0)];else{var j=b.shadowForComponent(a),k=b.parseContextReference(c.source||"{that}.options");"that"!==k.context&&b.fail("Error in options distribution record ",c," only a context of {that} is supported");var l=b.parseExpectedOptionsPath(k.path,"source"),m=b.makeArray(c.exclusions).concat(0===l.length?b.undistributableOptions:[]),n=b.transform(m,function(a){return b.model.parseEL(a)});h=b.filterBlocks(a,j.mergeOptions.mergeBlocks,l,i,n,c.removeSource),j.mergeOptions.updateBlocks()}if(e)b.pushDistributions(d,e,h);else{var o=b.shadowForComponent(d);b.applyDistributions(a,h,o)}})},b.gradeNamesToHash=function(a){var c={};return b.each(a,function(a){c[a]=!0,c[b.computeNickName(a)]=!0}),c},b.cacheShadowGrades=function(a,c){var d=b.gradeNamesToHash(a.options.gradeNames);d[a.nickName]=!0,c.contextHash=d},b.deliverOptionsStrategy=function(a,c,d){var e=b.shadowForComponent(a,e);b.cacheShadowGrades(a,e),e.mergeOptions=d},b.resolveReturnedPath=function(a,c){var d=b.shadowForComponent(c);return d&&""!==d.path?null:a},b.defaults("fluid.gradeLinkageRecord",{gradeNames:["fluid.littleComponent"]}),b.defaults("fluid.applyGradeLinkage",{}),b.gradeLinkageIndexer=function(a){return a.contextGrades&&a.resultGrades?["*"]:void 0},b.getLinkedGrades=function(a){var c=[],d=b.indexDefaults("gradeLinkages",{gradeNames:"fluid.gradeLinkageRecord",indexFunc:b.gradeLinkageIndexer});return b.each(d["*"],function(d){var e=b.defaults(d),f=b.find(b.makeArray(e.contextGrades),function(c){return b.contains(a,c)?void 0:!0});f||c.push.apply(c,b.makeArray(e.resultGrades))}),c},b.expandDynamicGrades=function(a,c,d,e){var f=[];b.each(e,function(c){var d=b.expandOptions(c,a);"function"==typeof d&&(d=d()),d&&(f=f.concat(d))});var g=b.makeArray(d).concat(f);if(b.contains(g,"fluid.applyGradeLinkage")){var h=b.getLinkedGrades(g);b.remove_if(h,function(a){return b.contains(g,a)}),f=f.concat(h)}var i=b.receiveDistributions(null,null,null,a);if(i.length>0){var j=b.applyDistributions(a,i,c),k=b.transform(b.getMembers(j,["source","gradeNames"]),b.makeArray);f=f.concat.apply(f,k)}return f},b.collectDynamicGrades=function(a,c,d,e,f,g){var h=b.copy(b.getGradedDefaults(a.typeName,g));e.length=0,e.push.apply(e,h.gradeNames),b.cacheShadowGrades(a,c),c.mergeOptions.destroyValue("mergePolicy"),c.mergeOptions.destroyValue("components"),c.mergeOptions.destroyValue("invokers"),d.source=h,c.mergeOptions.updateBlocks();var i=b.remove_if(e,function(a){return"{"===a.charAt(0)&&!b.contains(f,a)},[]);return f.push.apply(f,i),i=b.expandDynamicGrades(a,c,e,i),g.push.apply(g,i),i},b.computeDynamicGrades=function(a,c,d){delete a.options.gradeNames;var e=b.driveStrategy(a.options,"gradeNames",d),f=b.findMergeBlocks(c.mergeOptions.mergeBlocks,"defaults")[0],g=b.remove_if(e,function(a){return"{"===a.charAt(0)||!b.hasGrade(f.target,a)},[]),h=b.expandDynamicGrades(a,c,e,g);if(0!==h.length){var i;do i=b.collectDynamicGrades(a,c,f,e,g,h);while(0!==i.length)}c.collectedClearer&&(c.collectedClearer(),delete c.collectedClearer)},b.computeDynamicComponentKey=function(a,b){return a+(0===b?"":"-"+b)},b.registerDynamicRecord=function(a,c,d,e,f){var g=b.computeDynamicComponentKey(c,d),h=b.copy(e);return delete h[f],b.set(a.options,["components",g],h),g},b.computeDynamicComponents=function(a,c){var d=b.shadowForComponent(a),e=d.subcomponentLocal={},f=b.driveStrategy(a.options,"dynamicComponents",c.strategy);b.each(f,function(c,f){if(c.sources||c.createOnEvent||b.fail("Cannot process dynamicComponents record ",c,' without a "sources" or "createOnEvent" entry'),c.sources){var g=b.expandOptions(c.sources,a);b.each(g,function(d,g){var h=b.registerDynamicRecord(a,f,g,c,"sources");e[h]={source:d,sourcePath:g}})}else if(c.createOnEvent){var h=b.event.expandOneEvent(a,c.createOnEvent);b.set(d,["dynamicComponentCount",f],0);var i=function(){var g=b.registerDynamicRecord(a,f,d.dynamicComponentCount[f]++,c,"createOnEvent");e[g]={arguments:b.makeArray(arguments)},b.initDependent(a,g)};h.addListener(i),b.recordListener(h,i,d)}})},b.computeComponentAccessor=function(a){var c=b.shadowForComponent(a),d=a.options,e=c.mergeOptions.strategy,f=b.mountStrategy(["options"],d,e);c.invokerStrategy=b.recordStrategy(a,d,e,"invokers",b.invokerFromRecord),c.eventStrategyBlock=b.recordStrategy(a,d,e,"events",b.eventFromRecord,["events"]);var g=b.mountStrategy(["events"],a,c.eventStrategyBlock.strategy,["events"]);return c.memberStrategy=b.recordStrategy(a,d,e,"members",b.memberFromRecord),c.getConfig={strategies:[b.model.funcResolverStrategy,b.makeGingerStrategy(a),f,c.invokerStrategy.strategy,c.memberStrategy.strategy,g]},b.computeDynamicGrades(a,c,e,c.mergeOptions.mergeBlocks),b.distributeOptions(a,e),c.getConfig},b.shadowForComponent=function(a){var c=b.getInstantiator(a);return c&&a?c.idToShadow[a.id]:null},b.getForComponent=function(a,c){var d=b.shadowForComponent(a),e=d?d.getConfig:void 0;return b.get(a,c,e)},b.makeGingerStrategy=function(a){var c=b.getInstantiator(a);return function(a,d,e,f){var g=a[d];if(g===b.inEvaluationMarker&&e===f.length&&b.fail('Error in component configuration - a circular reference was found during evaluation of path segment "'+d+'": for more details, see the activity records following this message in the console, or issue fluid.setLogging(fluid.logLevel.TRACE) when running your application'),e>1)return g;if(void 0===g&&a.hasOwnProperty(d))return b.NO_VALUE;if(void 0===g){var h=c.idToShadow[a.id].path,i=b.composePath(h,d);g=c.pathToComponent[i]}if(void 0===g){var j=b.getForComponent(a,["options","components",d]);j&&(j.createOnEvent&&b.fail('Error resolving path segment "'+d+'" of path '+f.join(".")+" since component with record ",j,' has annotation "createOnEvent" - this very likely represents an implementation error. Either alter the reference so it does not match this component, or alter your workflow to ensure that the component is instantiated by the time this reference resolves'),b.initDependent(a,d),g=a[d])}return g}},b.filterBuiltinGrades=function(a){return b.remove_if(b.makeArray(a),function(a){return/^(autoInit|fluid.littleComponent|fluid.modelComponent|fluid.eventedComponent|fluid.viewComponent|fluid.typeFount)$/.test(a)})},b.dumpGradeNames=function(a){return a.options&&a.options.gradeNames?" gradeNames: "+JSON.stringify(b.filterBuiltinGrades(a.options.gradeNames)):""},b.dumpThat=function(a){return'{ typeName: "'+a.typeName+'"'+b.dumpGradeNames(a)+" id: "+a.id+"}"},b.dumpThatStack=function(a,c){var d=b.transform(a,function(a){var d=c.idToPath(a.id);return b.dumpThat(a)+(d?" - path: "+d:"")});return d.join("\n")},b.resolveContext=function(a,c){var d=b.getInstantiator(c);if("instantiator"===a)return d;if("that"===a)return c;var f,g=d.getFullStack(c);return e(d,g,function(c,d){var e=b.shadowForComponent(c);return a===d||e&&e.contextHash&&e.contextHash[a]||a===c.typeName||a===c.nickName?(f=c,!0):b.getForComponent(c,["options","components",a,"type"])&&!c[a]?(f=b.getForComponent(c,a),!0):void 0}),f};var f=/^(arguments|options|container|source|sourcePath|change)$/;b.makeStackFetcher=function(a,c){var d=function(d){a&&a.destroy===b.destroyedMarker&&b.fail("Cannot resolve reference "+b.renderContextReference(d)+" from component "+b.dumpThat(a)+" which has been destroyed");var e=d.context;if(c&&f.test(e)){var g=b.get(c[e],d.path);return"arguments"===e||"source"===e||"sourcePath"===e||"change"===e?g:{marker:"options"===e?b.EXPAND:b.EXPAND_NOW,value:g}}var h=b.resolveContext(e,a);if(!h&&""!==d.path){var i=b.renderContextReference(d);b.fail("Failed to resolve reference "+i+" - could not match context with name "+e+" from component "+b.dumpThat(a),a)}return b.getForComponent(h,d.path)};return d},b.makeStackResolverOptions=function(c,d){return a.extend(b.copy(b.rawDefaults("fluid.makeExpandOptions")),{fetcher:b.makeStackFetcher(c,d),contextThat:c})},b.clearListeners=function(a){b.each(a.listeners,function(a){a.event.removeListener(a.listener)}),delete a.listeners},b.recordListener=function(a,b,c){if(a.ownerId!==c.that.id){var d=c.listeners;d||(d=c.listeners=[]),d.push({event:a,listener:b})}};var g={};b.instantiator=function(a){function c(a,c,e){if(e){g[a.id]=d;var f=d.idToShadow[a.id]={};f.that=a,f.path=c}d.pathToComponent[c]&&b.fail("Error during instantiation - path "+c+" which has just created component "+b.dumpThat(a)+" has already been used for component "+b.dumpThat(d.pathToComponent[c])+" - this is a circular instantiation or other oversight. Please clear the component using instantiator.clearComponent() before reusing the path."),d.pathToComponent[c]=a}var d={id:b.allocateGuid(),free:a,nickName:"instantiator",pathToComponent:{},idToShadow:{},modelTransactions:{init:{}},composePath:b.composePath};return d.idToPath=function(a){var b=d.idToShadow[a];return b?b.path:""},d.getThatStack=function(a){var c=d.idToShadow[a.id];if(c){var e=c.path,f=b.model.parseEL(e),g=b.transform(f,function(a,c){var e=b.model.composeSegments.apply(null,f.slice(0,c+1));return d.pathToComponent[e]}),h=d.pathToComponent[""];return h&&g.unshift(h),g}return[a]},d.getEnvironmentalStack=function(){var c=[b.staticEnvironment];return a||c.push(b.globalThreadLocal()),c},d.getFullStack=function(a){var b=a?d.getThatStack(a):[];return d.getEnvironmentalStack().concat(b)},d.recordRoot=function(a){a&&a.id&&!d.pathToComponent[""]&&c(a,"",!0)},d.recordKnownComponent=function(a,b,e,f){var g=d.idToShadow[a.id].path,h=d.composePath(g,e);c(b,h,f)},d.clearComponent=function(a,c,e,f,h,i){var j=d.idToShadow[a.id].path;f=f||{flat:!0,instantiator:d},e=e||a[c],i=i||j,void 0===i&&b.fail("Cannot clear component "+c+" from component ",a," which was not created by this instantiator"),b.fireEvent(e,"events.onClear",[e,c,a]);var k=d.composePath(i,c),l=d.idToShadow[e.id];l&&l.path===k&&(b.doDestroy(e,c,a),b.clearListeners(l),b.visitComponentChildren(e,function(a,b,c,g){d.clearComponent(e,b,null,f,!0,g)},f,k),b.fireEvent(e,"events.afterDestroy",[e,c,a]),delete d.idToShadow[e.id],delete g[e.id]),delete d.pathToComponent[k],h||delete a[c]},d},b.freeInstantiator=b.instantiator(!0),b.getInstantiator=function(a){return a&&g[a.id]||b.freeInstantiator},b.expandOptions=function(a,c,d,e,f){if(!a)return a;b.pushActivity("expandOptions","expanding options %args for component %that ",{that:c,args:a});var g=b.makeStackResolverOptions(c,e);g.mergePolicy=d,g.freeRoot=f&&f.freeRoot;var h=f&&f.defer?b.makeExpandOptions(a,g):b.expand(a,g);return b.popActivity(),h},b.localRecordExpected=["type","options","args","mergeOptions","createOnEvent","priority","recordType"],b.checkComponentRecord=function(a,c){var d=b.arrayToHash(b.localRecordExpected);b.each(a&&a.argumentMap,function(a,b){d[b]=!0}),b.each(c,function(a,c){d[c]||b.fail('Probable error in subcomponent record - key "'+c+'" found, where the only legal options are '+b.keys(d).join(", "))})},b.pushDemands=function(a,c){function d(b){b.recordType="demands",b.priority=f++,a.push(b)}function e(a){d({options:a})}c=b.makeArray(c);for(var f=b.mergeRecordTypes.demands,g=0;g<c.length;++g){var h=c[g];if(h.options)d(h);else if(h.mergeOptions){var i=b.makeArray(h.mergeOptions);b.each(i,e)}else b.fail("Uninterpretable demands record without options or mergeOptions ",h)}},b.mergeRecordsToList=function(a){var c=[];return b.each(a,function(a,d){if(a.recordType=d,"distributions"===d)c.push.apply(c,a);else if("demands"!==d){if(!a.options)return;a.priority=b.mergeRecordTypes[d],void 0===a.priority&&b.fail("Merge record with unrecognised type "+d+": ",a),c.push(a)}else b.pushDemands(c,a)}),c};var h=function(a){return b.each(["gradeNames","mergePolicy","argumentMap","components","dynamicComponents","members","invokers","events","listeners","modelListeners","distributeOptions","transformOptions"],function(c){b.set(a,[c,"*","noexpand"],!0)}),a};b.generateExpandBlock=function(a,c,d,e){var f=b.expandOptions(a.options,a.contextThat||c,d,e,{defer:!0});return f.priority=a.priority,f.recordType=a.recordType,f};var i=function(c,d,e,f){var g=b.copy(d);h(c);var i=b.shadowForComponent(f);i.mergePolicy=c;var j={defaults:{options:g}};e&&(e.marker===b.EXPAND?(a.extend(j,e.mergeRecords),j.subcomponentRecord&&b.checkComponentRecord(d,j.subcomponentRecord)):j.user={options:b.expandCompact(e,!0)});var k=b.mergeRecordsToList(j),l=b.transform(k,function(a){return b.generateExpandBlock(a,f,c,e&&e.localRecord)});return l};b.makeIoCRootDestroy=function(a,b){return function(){a.clearComponent(b,"",b,null,!0)}},b.fabricateDestroyMethod=function(a,b,c,d){return function(){c.clearComponent(a,b,d)}},b.expandComponentOptions=function(a,c,d,e){var f,g=d&&d.marker===b.EXPAND&&void 0!==d.memberName?d.instantiator:null;g||(g=b.instantiator(),f=!0,b.log("Created new instantiator with id "+g.id+" in order to operate on component "+(e?e.typeName:"[none]")),e.destroy=b.makeIoCRootDestroy(g,e)),b.pushActivity("expandComponentOptions","expanding component options %options with record %record for component %that",{options:d&&d.mergeRecords,record:d,that:e}),f?g.recordRoot(e):g.recordKnownComponent(d.parentThat,e,d.memberName,!0);var h=i(a,c,d,e);return b.popActivity(),h},b.argMapToDemands=function(a){var c=[];return b.each(a,function(a,b){c[a]="{"+b+"}"}),c},b.makePassArgsSpec=function(a){return b.transform(a,function(a,b){return"{arguments}."+b})},b.pushDemandSpec=function(a,b,c){b&&"{options}"!==b&&a.push({options:b}),c&&a.push({mergeOptions:c})},b.embodyDemands=function(c,d,e,f){f=f||{},d.mergeOptions&&d.options&&b.fail("demandspec ",d," is invalid - cannot specify literal options together with mergeOptions"),d.transformOptions&&(d.options=a.extend(!0,{},d.options,{transformOptions:d.transformOptions}));var g=b.makeArray(d.args),h=b.defaults(d.funcName),i={},j=h&&c?b.receiveDistributions(c,h.gradeNames,f.memberName,i):[],k=h?h.argumentMap:null,l=!1;if(h&&(f.passArgs=!1),!k&&(h||f&&f.componentRecord))if(l=!0,g.length<2)k=b.rawDefaults("fluid.littleComponent").argumentMap;else{var m=a.inArray("{options}",g);-1===m&&(m=g.length-1),k={options:m}}f=f||{},0===g.length&&(k?g=b.argMapToDemands(k):f.passArgs&&(g=b.makePassArgsSpec(e)));var n=b.shadowForComponent(c),o=n&&f.memberName?n.subcomponentLocal[f.memberName]:null,p=a.extend({arguments:e},b.censorKeys(f.componentRecord,["type"]),o);b.each(k,function(a,b){if(e.length>0&&(p[b]=p.arguments[a]),void 0!==d[b]&&void 0===p[b]&&(p[b]=d[b]),"options"!==b)for(var c=0;c<j.length;++c)void 0!==j[c][b]&&(p[b]=j[c][b])});var q;for(q=0;q<j.length;++q)void 0!==j[q].type&&(d.funcName=j[q].type);var r={distributions:j};void 0!==f.componentRecord&&(r.subcomponentRecord=a.extend({},f.componentRecord));var s=b.makeStackResolverOptions(c,p),t=function(a){b.pushDemandSpec(r.demands,a.options,a.mergeOptions)},u=[];if(g)for(q=0;q<g.length;++q){var v=g[q];if(b.isMarker(v)&&v.value===b.COMPONENT_OPTIONS.value&&(v="{options}",l&&(k={options:q})),"string"==typeof v&&"@"===v.charAt(0)){var w=v.substring(1);v="{arguments}."+w}g[q]=v,k&&k.options===q?(f.passArgs&&b.fail("Error invoking function "+d.funcName+": found component creator rather than free function"),"object"!=typeof v||v.targetTypeName||(v.targetTypeName=d.funcName),r.demands=[],b.each(d.backSpecs.reverse(),t),b.pushDemandSpec(r.demands,d.options||v,d.mergeOptions),e.length>0&&(r.user={options:p.options}),u[q]={marker:b.EXPAND,localRecord:o,mergeRecords:r,instantiator:b.getInstantiator(c),parentThat:c,memberName:f.memberName}):u[q]=b.expand(v,s),u[q]&&b.isMarker(u[q].marker,b.EXPAND_NOW)&&(u[q]=b.expand(u[q].value,s))}else u=e?e:[];var x={args:u,preExpand:g,funcName:d.funcName};return x},b.initDependent=function(a,c,d){if(!a[c]){d=d||[];var e=a.options.components[c];b.pushActivity("initDependent",'instantiating dependent component with name "%name" with record %record as child of %parent',{name:c,record:e,parent:a});var f,h=g[a.id];if("string"==typeof e)f=b.expandOptions(e,a),h.recordKnownComponent(a,f,c,!1);else if(e.type){var i=b.expandOptions(e.type,a);i||b.fail("Error in subcomponent record: ",e.type," could not be resolved to a type for component ",c," of parent ",a);var j=b.resolveDemands(a,[i,c],d,{componentRecord:e,memberName:c});f=b.initSubcomponentImpl(a,{type:j.funcName},j.args);var k=h.composePath(h.idToPath(a.id),c),l=h.pathToComponent[k];l&&l!==f&&h.clearComponent(a,c,l),f&&f.typeName&&f.id&&f!==l&&h.recordKnownComponent(a,f,c,!0),f.destroy=b.fabricateDestroyMethod(a,c,h,f)}else b.fail("Unrecognised material in place of subcomponent "+c+' - no "type" field found');return a[c]=f,b.fireEvent(f,"events.onAttach",[f,c,a]),b.popActivity(),f}},b.bindDeferredComponent=function(a,c,d){var e=b.makeArray(d.createOnEvent);b.each(e,function(e){var f="{"===e.charAt(0)?b.expandOptions(e,a):a.events[e];f&&f.addListener||b.fail("Error instantiating createOnEvent component with name "+c+" of parent ",a," since event specification "+e+" could not be expanded to an event - got ",f),f.addListener(function(){if(b.pushActivity("initDeferred","instantiating deferred component %componentName of parent %that due to event %eventName",{componentName:c,that:a,eventName:e}),a[c]){var d=g[a.id];d.clearComponent(a,c)}b.initDependent(a,c),b.popActivity()},null,null,d.priority)})},b.priorityForComponent=function(a){return a.priority?a.priority:"fluid.typeFount"===a.type||b.hasGrade(b.defaults(a.type),"fluid.typeFount")?"first":void 0},b.initDependents=function(a){b.pushActivity("initDependents","instantiating dependent components for component %that",{that:a});var c=b.shadowForComponent(a);c.memberStrategy.initter();var d=a.options,e=d.components||{},f={};b.each(e,function(c,d){if(c.createOnEvent)b.bindDeferredComponent(a,d,c);else{var e=b.priorityForComponent(c);f[d]=[{key:d,priority:b.event.mapPriority(e,0)}]}});var g=b.event.sortListeners(f);b.each(g,function(c){b.initDependent(a,c.key)}),c.invokerStrategy.initter(),b.popActivity()};var j={},k=!1;b.setDemandLogging=function(a){k=a},b.isDemandLogging=function(){return k&&b.isLogging()},b.demands=function(a,d,e){var f=b.makeArray(d).sort();if(!e)return c(a,f);if(e.length&&(e={args:e}),b.getCallerInfo&&b.isDemandLogging()){var g=b.getCallerInfo(5);g&&(e.registeredFrom=g)}e.demandId=b.allocateGuid();var h=j[a];h||(h=[],j[a]=h),h.push({contexts:f,spec:e})},b.compareDemands=function(a,b){return b.intersect-a.intersect},b.locateAllDemands=function(a,c){var d=b.isDemandLogging(c);d&&b.log("Resolving demands for function names ",c," in context of "+(a?"component "+a.typeName:"no component"));var f={},g=[],h=b.getInstantiator(a),i=h.getFullStack(a);e(h,i,function(a,c,d,e,h){f[a.typeName]=h;var i=b.makeArray(b.get(a,["options","gradeNames"]));b.each(i,function(a){f[a]=h}),g.push(a)}),d&&b.log("Components in scope for resolution:\n"+b.dumpThatStack(g,h));for(var k=[],l=0;l<c.length;++l)for(var m=j[c[l]]||[],n=0;n<m.length;++n){for(var o=m[n],p=o.spec.horizon?f[o.spec.horizon]:-1,q={spec:o,intersect:0,uncess:0},r=0;r<o.contexts.length;++r){var s=f[o.contexts[r]];q[void 0!==s&&s>=p?"intersect":"uncess"]+=2}0===o.contexts.length&&q.intersect++,0===q.uncess&&k.push(q)}return k.sort(b.compareDemands),k},b.locateDemands=function(a,c){var d=b.locateAllDemands(a,c),e=b.getMembers(d,["spec","spec"]);return b.isDemandLogging(c)&&(e.length?b.log("Located "+d.length+" potential match"+(1===d.length?"":"es")+", selected best match with "+d[0].intersect+" matched context names: ",e):b.log("No matches found for demands, using direct implementation")),e},b.determineDemands=function(c,d){d=b.makeArray(d);var e=d[0],f=b.locateDemands(c,d);return f.length&&f[0].funcName&&(e=f[0].funcName),a.extend(!0,{funcName:e,args:f[0]?b.makeArray(f[0].args):[]},{backSpecs:f.slice(1)},b.censorKeys(f[0],["funcName","args"]))},b.resolveDemands=function(a,c,d,e){var f=b.determineDemands(a,c);return b.embodyDemands(a,f,d,e)},b.thisistToApplicable=function(a,c,d){return{apply:function(e,f){var g=b.expandOptions(c,d);"string"==typeof g&&(g=b.getGlobalValue(g)),g||b.fail("Could not resolve reference "+c+" to a value");var h=g[a.method];return"function"!=typeof h&&b.fail("Object ",g," at reference "+c+" has no member named "+a.method+" which is a function "),b.log("Applying arguments ",f," to method "+a.method+" of instance ",g),h.apply(g,f)}}},b.changeToApplicable=function(a,c){return{apply:function(d,e){var f=b.parseValidModelReference(c,"changePath listener record",a.changePath),g=b.expandOptions(a.value,c,{},{arguments:e});b.fireSourcedChange(f.applier,f.path,g,a.source)}}},b.recordToApplicable=function(a,c){if(a.changePath)return b.changeToApplicable(a,c);var d=a["this"];return a.method^d&&b.fail("Record ",c,' must contain both entries "method" and "this" if it contains either'),a.method?b.thisistToApplicable(a,d,c):null},b.invoke=function(a,c,d,e){b.pushActivity("invokeFunc",'invoking function with name "%functionName" from component %that',{functionName:a,that:d});var f=b.resolveDemands(d,a,b.makeArray(c),{passArgs:!0}),g=b.invokeGlobalFunction(f.funcName,f.args,e);return b.popActivity(),g},b.makeFreeInvoker=function(a,c){var d=b.determineDemands(null,a);return function(){var a=b.embodyDemands(null,d,b.makeArray(arguments),{passArgs:!0});return b.invokeGlobalFunction(a.funcName,a.args,c)}};var l="{arguments}.";b.parseInteger=function(a){return isFinite(a)&&a%1===0?Number(a):0/0},b.makeFastInvoker=function(a,c){var d;if(a.preExpand){d={};for(var e=0;e<a.preExpand.length;++e){var f=a.preExpand[e];if("string"==typeof f){if(-1!==f.indexOf("}.model"))return{noFast:!0};if("{arguments}"===f)d[e]="*";else if(0===f.indexOf(l)){var g=b.parseInteger(f.substring(l.length));if(isNaN(g))return{noFast:!0};d[e]=g}}}}var h=a.args,i=d?function(a){
for(var b in d)h[b]="*"===d[b]?a:a[d[b]];return c.apply(null,h)}:function(a){return c.apply(null,a)};return{invoke:i}},b.makeInvoker=function(a,c,d,e){var f;"string"==typeof c&&("{"===c.charAt(0)?c={func:c}:f=c);var g=f?b.determineDemands(a,f):c,h={noFast:c.dynamic};return function(){b.defeatLogging===!1&&b.pushActivity("invokeInvoker","invoking invoker with name %name and record %record from component %that",{name:d,record:c,that:a});var f;if(h.invoke)f=h.invoke(arguments);else{var i=b.recordToApplicable(c,a),j=b.makeArray(arguments),k=b.embodyDemands(a,g,j,{passArgs:!0});i=i||(k.funcName?b.getGlobalValue(k.funcName,e):b.expandOptions(g.func,a)),i&&i.apply||b.fail("Error in invoker record: could not resolve members func, funcName or method to a function implementation - got "+i+" from ",g),h.noFast!==!0&&(h=b.makeFastInvoker(k,i)),f=i.apply(null,k.args)}return b.defeatLogging===!1&&b.popActivity(),f}},b.event.makeTrackedListenerAdder=function(a){var c=b.shadowForComponent(a);return function(a){return{addListener:function(d){b.recordListener(a,d,c),a.addListener.apply(null,arguments)}}}},b.event.listenerEngine=function(a,c,d){function e(){var d=b.find(a,function(a,b){return void 0===f[b]?!0:void 0});if(!d){var e=f;f={},c(e)}}var f={};b.each(a,function(a,c){d(a).addListener(function(){f[c]=b.makeArray(arguments),e()})})},b.event.dispatchListener=function(a,c,d,e,f){var g=function(){b.pushActivity("dispatchListener","firing to listener to event named %eventName of component %that",{eventName:d,that:a});var g=f?arguments[0]:b.makeArray(arguments),h=b.determineDemands(a,d);0===h.args.length&&e.args&&(h.args=e.args);var i=b.embodyDemands(a,h,g,{passArgs:!0}),j=b.event.invokeListener(c,i.args);return b.popActivity(),j};return b.event.impersonateListener(c,g),g},b.event.resolveSoftNamespace=function(a){if("string"!=typeof a)return null;var b=Math.max(a.lastIndexOf("."),a.lastIndexOf("}"));return a.substring(b+1)},b.event.resolveListenerRecord=function(a,c,d,e,f){var g=function(a,c){b.fail("Error in listener record - could not resolve reference ",a,' to a listener or firer. Did you miss out "events." when referring to an event firer?'+c)};b.pushActivity("resolveListenerRecord","resolving listener record for event named %eventName for component %that",{eventName:d,that:c});var h=b.makeArray(a),i=b.transform(h,function(a){var h=b.isPrimitive(a)||a.expander?{listener:a}:b.copy(a),i=b.recordToApplicable(a,c);i?h.listener=i:h.listener=h.listener||h.func||h.funcName,h.listener||g(a,' Listener record must contain a member named "listener", "func", "funcName" or "method"');var j=a.method?b.event.resolveSoftNamespace(a["this"])+"."+a.method:b.event.resolveSoftNamespace(h.listener);h.namespace||e||!j||(h.softNamespace=!0,h.namespace=(a.componentSource?a.componentSource:c.typeName)+"."+j);var k=h.listener=b.expandOptions(h.listener,c);k||g(a,"");var l=!1;return"fluid.event.firer"===k.typeName&&(k=k.fire,l=!0),h.listener=f&&(h.args||l)?b.event.dispatchListener(c,k,d,h):k,h}),j={records:i,adderWrapper:f?b.event.makeTrackedListenerAdder(c):null};return b.popActivity(),j},b.event.expandOneEvent=function(a,c){var d;return d="string"==typeof c&&"{"!==c.charAt(0)?b.getForComponent(a,["events",c]):b.expandOptions(c,a),d&&"fluid.event.firer"===d.typeName||b.fail("Error in event specification - could not resolve base event reference ",c," to an event firer: got ",d),d},b.event.expandEvents=function(a,c){return"string"==typeof c?b.event.expandOneEvent(a,c):b.transform(c,function(c){return b.event.expandOneEvent(a,c)})},b.event.resolveEvent=function(a,c,d){b.pushActivity("resolveEvent","resolving event with name %eventName attached to component %that",{eventName:c,that:a});var e=b.event.makeTrackedListenerAdder(a);"string"==typeof d&&(d={event:d});var f=d.event||d.events;f||b.fail("Event specification for event with name "+c+" does not include a base event specification: ",d);var g,h=b.event.expandEvents(a,f),i="fluid.event.firer"!==h.typeName,j=d.args||i;if(j){g=b.makeEventFirer({name:" [composite] "+b.event.nameEvent(a,c)});var k=b.event.dispatchListener(a,g.fire,c,d,i);i?b.event.listenerEngine(h,k,e):e(h).addListener(k)}else g={typeName:"fluid.event.firer"},g.fire=function(){var a=b.makeArray(arguments);b.pushActivity("fireSynthetic","firing synthetic event %eventName ",{eventName:c});var d=h.fire.apply(null,a);return b.popActivity(),d},g.addListener=function(f,g,i,j,k){var l=b.event.dispatchListener(a,f,c,d);e(h).addListener(l,g,i,j,k)},g.removeListener=function(a){h.removeListener(a)};return b.popActivity(),g},b.withEnvironment=function(c,d,e){return e=e||b.globalThreadLocal(),b.tryCatch(function(){for(var b in c)e[b]=c[b];return a.extend(e,c),d()},null,function(){for(var a in c)delete e[a]})},b.fetchContextReference=function(a,c,d,e,f){e&&(a=e(a,d));var g=a.context?d[a.context]:c;if(!g){var h=f&&f(a);return h||g}return a.noDereference?a.path:b.get(g,a.path)},b.makeEnvironmentFetcher=function(a,c,d,e){return d=d||b.globalThreadLocal,function(f){var g=d();return b.fetchContextReference(f,a,g,c,e)}},b.coerceToPrimitive=function(a){return"false"===a?!1:"true"===a?!0:isFinite(a)?Number(a):a},b.compactStringToRec=function(c,d){var e=c.indexOf("("),f=c.indexOf(")");if((-1===e^-1===f||e>f)&&b.fail("Badly-formed compact "+d+" record without matching parentheses: ",c),-1!==e&&-1!==f){var g=c.substring(0,e),h=c.substring(e+1,f),i=b.transform(h.split(","),a.trim,b.coerceToPrimitive),j={args:i};return"invoker"===d&&"!"===g.charAt(e-1)&&(g=c.substring(0,e-1),j.dynamic=!0),j["{"===g.charAt(0)?"func":"funcName"]=g,j}return"expander"===d&&b.fail("Badly-formed compact expander record without parentheses: ",c),c},b.expandPrefix="@expand:",b.expandCompactString=function(a,c){var d=a;if(0===a.indexOf(b.expandPrefix)){var e=a.substring(b.expandPrefix.length);d={expander:b.compactStringToRec(e,"expander")}}else c&&(d=b.compactStringToRec(a,c));return d};var m={listeners:"listener",modelListeners:"modelListener"},n=a.extend({invokers:"invoker"},m);b.expandCompactRec=function(a,c,d,e){var f=a.length>0?a[a.length-1]:"",g=n[f];!g&&a.length>1&&(g=m[a[a.length-2]]),b.each(d,function(d,f){return!b.isPlainObject(d)||b.isDOMish(d)||e&&"model"===f&&0===a.length?("string"==typeof d&&(d=b.expandCompactString(d,g)),void(c[f]=d)):(c[f]=b.freshContainer(d),a.push(f),b.expandCompactRec(a,c[f],d),void a.pop())})},b.expandCompact=function(a,c){var d={};return b.expandCompactRec([],d,a,c),d},b.extractEL=function(a,b){if("ALL"===b.ELstyle)return a;if(1===b.ELstyle.length){if(a.charAt(0)===b.ELstyle)return a.substring(1)}else if("${}"===b.ELstyle){var c=a.indexOf("${"),d=a.lastIndexOf("}");if(0===c&&-1!==d)return a.substring(2,d)}},b.extractELWithContext=function(a,c){var d=b.extractEL(a,c);return d&&"{"===d.charAt(0)&&d.indexOf("}")>0?b.parseContextReference(d):d?{path:d}:d},b.parseContextReference=function(a,c,d){c=c||0;var e=a.indexOf("}",c+1);-1===e&&b.fail('Cannot parse context reference "'+a+'": Malformed context reference without }');var f=a.substring(c+1,e),g=d?a.indexOf(d,e+1):a.length,h=a.substring(e+1,g);return"."===h.charAt(0)&&(h=h.substring(1)),{context:f,path:h,endpos:g}},b.renderContextReference=function(a){return"{"+a.context+"}"+(a.path?"."+a.path:"")},b.resolveContextValue=function(a,c){function d(d){b.pushActivity("resolveContextValue","resolving context value %string",{string:a});var e=c.fetcher(d);return b.pushActivity("resolvedContextValue","resolved value %string to value %value",{string:a,value:e}),b.popActivity(2),e}var e;if(c.bareContextRefs&&"{"===a.charAt(0)&&a.indexOf("}")>0)return e=b.parseContextReference(a),d(e);if(c.ELstyle&&"${}"!==c.ELstyle&&(e=b.extractELWithContext(a,c)))return d(e);for(;"string"==typeof a;){var f=a.indexOf("${"),g=a.indexOf("}",f+2);if(-1===f||-1===g)break;"{"===a.charAt(f+2)?(e=b.parseContextReference(a,f+2,"}"),g=e.endpos):e={path:a.substring(f+2,g)};var h=d(e),i=0===f&&g===a.length-1;if(void 0===h||null===h)return h;a=i?h:a.substring(0,f)+h+a.substring(g+1)}return a},b.expandExpander=function(a,c,d){var e=b.getGlobalValue(c.expander.type||"fluid.deferredInvokeCall");return e?e.call(null,a,c,d):void 0},b.fetchExpandChildren=function(c,d,e,f,g,h,i){if(f.expander){var j=b.expandExpander(c,f,i);if(i.freeRoot||b.isPrimitive(j)||b.isDOMish(j)||!b.isPlainObject(j)||b.isArrayable(j)^b.isArrayable(c))return j;a.extend(!0,c,j)}return b.each(f,function(a,b){void 0===a?c[b]=void 0:"expander"!==b&&(e[d]=b,i.strategy(c,b,d+1,e,f,g,h))}),c},b.isUnexpandable=function(a){return b.isPrimitive(a)||b.isComponent(a)||void 0!==a.nodeType||a.jquery||!b.isPlainObject(a)},b.expandSource=function(a,c,d,e,f,g,h,i,j){var k,l,m,n=b.derefMergePolicy(h);return"string"!=typeof g||n.noexpand?n.noexpand||b.isUnexpandable(g)?k=g:g.expander?k=b.expandExpander(f,g,a):(n.preserve?(k=g,m=!0):k=b.freshContainer(g),l=!0):a.defaultEL&&"{"!==g.charAt(0)?k=g:(b.pushActivity("expandContextValue","expanding context value %source held at path %path",{source:g,path:b.path.apply(null,e.slice(0,d))}),k=b.resolveContextValue(g,a),b.popActivity(1)),m||k===b.NO_VALUE||f(k),l&&j(k,g,d,e,h,i||m),m&&k!==b.NO_VALUE&&f(k),k},b.makeExpandStrategy=function(a){var c=function(c,d,e,f,g,h){return b.fetchExpandChildren(c,e||0,f||[],d,g,h,a)},e=function(e,f,g,h,i,j,k){function l(a){e[f]=a}if(g>b.strategyRecursionBailout&&b.fail("Overflow/circularity in options expansion, current path is ",h," at depth ",g,' - please ensure options are not circularly connected, or protect from expansion using the "noexpand" policy or expander'),e){if(!k&&e.hasOwnProperty(f))return e[f];void 0===i&&(i=d(a.source,h,g-1,a.sourceStrategy),j=d(a.mergePolicy,h,g-1,b.concreteTrundler));var m=a.sourceStrategy(i,f,g,h),n=b.concreteTrundler(j,f);return b.expandSource(a,e,g,h,l,m,n,k,c)}};return a.recurse=c,a.strategy=e,e},b.defaults("fluid.makeExpandOptions",{ELstyle:"${}",bareContextRefs:!0,target:b.inCreationMarker}),b.makeExpandOptions=function(c,d){return d=a.extend({},b.rawDefaults("fluid.makeExpandOptions"),d),d.defaultEL="${}"===d.ELStyle&&d.bareContextRefs,d.expandSource=function(a){return b.expandSource(d,null,0,[],b.identity,a,d.mergePolicy,!1)},b.isUnexpandable(c)?(d.strategy=b.concreteTrundler,d.initter=b.identity,"string"==typeof c?d.target=d.expandSource(c):d.target=c):(d.source=c,d.target=b.freshContainer(c),d.sourceStrategy=d.sourceStrategy||b.concreteTrundler,b.makeExpandStrategy(d),d.initter=function(){d.target=b.fetchExpandChildren(d.target,0,[],d.source,d.mergePolicy,!1,d)}),d},b.expand=function(a,c){var d=b.makeExpandOptions(a,c);return d.initter(),d.target},b.registerNamespace("fluid.expander"),b.expander.deferredCall=function(a,c,d){var e=c.expander,f=!e.args||b.isArrayable(e.args)?e.args:b.makeArray(e.args);return f=d.recurse([],f),b.invokeGlobalFunction(e.func,f)},b.deferredCall=b.expander.deferredCall,b.deferredInvokeCall=function(a,c,d){var e=c.expander,f=b.makeArray(e.args);f=d.recurse([],f);var g=e.func||e.funcName,h=d.expandSource(g)||b.recordToApplicable(e,d.contextThat);return h||b.fail("Error in expander record - "+g+" could not be resolved to a function for component ",d.contextThat),h.apply?h.apply(null,f):b.invoke(h,f,d.contextThat)},b.expander.noexpand=function(a,b){return b.expander.value?b.expander.value:b.expander.tree},b.noexpand=b.expander.noexpand}(b,c);var c=c||{};!function(a,b){"use strict";function c(a){return a.lastIndexOf(".")}function d(a,c){return function(d){var e=c().sources,f=arguments,g=d.source||"";b.tryCatch(function(){void 0===e[g]&&(e[g]=0),++e[g],a.apply(null,f)},null,function(){--e[g]})}}b.model.makeEnvironmentStrategy=function(a){return function(b,c,d){return 0===d&&a[c]?a[c]:void 0}},b.model.defaultCreatorStrategy=function(a,b){return void 0===a[b]?(a[b]={},a[b]):void 0},b.model.defaultFetchStrategy=function(a,b){return a[b]},b.model.funcResolverStrategy=function(a,b){return a.resolvePathSegment?a.resolvePathSegment(b):void 0},b.model.traverseWithStrategy=function(a,c,d,e,f){for(var g=e.strategies,h=c.length-f,i=d;h>i;++i){if(!a)return a;for(var j,k=0;k<g.length&&(j=g[k](a,c[i],i+1,c),void 0===j);++k);j===b.NO_VALUE&&(j=void 0),a=j}return a},b.model.getValueAndSegments=function(a,c,d,e){return b.model.accessWithStrategy(a,c,b.NO_VALUE,d,e,!0)},b.model.makeTrundler=function(a){return function(c,d){return b.model.getValueAndSegments(c.root,d,a,c.segs)}},b.model.getWithStrategy=function(a,c,d,e){return b.model.accessWithStrategy(a,c,b.NO_VALUE,d,e)},b.model.setWithStrategy=function(a,c,d,e,f){b.model.accessWithStrategy(a,c,d,e,f)},b.model.accessWithStrategy=function(a,c,d,e,f,g){if(b.isPrimitive(c)||b.isArrayable(c))return b.model.accessImpl(a,c,d,e,f,g,b.model.traverseWithStrategy);var h=c.type||"default",i=e.resolvers[h];i||b.fail("Unable to find resolver of type "+h);var j=b.model.makeTrundler(e),k={root:a,segs:f};return k=i(k,c,j),c.path&&k&&(k=j(k,c.path)),g?k:k?k.root:void 0},b.registerNamespace("fluid.pathUtil");var e=function(a,b,c){var d=null;a&&(d="");for(var e=!1,f=b.length;f>c;++c){var g=b.charAt(c);if(e)e=!1,null!==d&&(d+=g);else{if("."===g)break;"\\"===g?e=!0:null!==d&&(d+=g)}}return null!==d&&(a[0]=d),c},f=[];b.pathUtil.parseEL=function(a){for(var b=[],c=0,d=a.length;d>c;){var g=e(f,a,c);b.push(f[0]),c=g+1}return b},b.pathUtil.composeSegment=function(a,b){b=b.toString();for(var c=0;c<b.length;++c){var d=b.charAt(c);("."===d||"\\"===d||"}"===d)&&(a+="\\"),a+=d}return a},b.pathUtil.escapeSegment=function(a){return b.pathUtil.composeSegment("",a)},b.pathUtil.composePath=function(a,c){return 0!==a.length&&(a+="."),b.pathUtil.composeSegment(a,c)},b.pathUtil.composeSegments=function(){for(var a="",c=0;c<arguments.length;++c)a=b.pathUtil.composePath(a,arguments[c]);return a},b.model.unescapedParser={parse:b.model.parseEL,compose:b.model.composeSegments},b.model.defaultGetConfig={parser:b.model.unescapedParser,strategies:[b.model.funcResolverStrategy,b.model.defaultFetchStrategy]},b.model.defaultSetConfig={parser:b.model.unescapedParser,strategies:[b.model.funcResolverStrategy,b.model.defaultFetchStrategy,b.model.defaultCreatorStrategy]},b.model.escapedParser={parse:b.pathUtil.parseEL,compose:b.pathUtil.composeSegments},b.model.escapedGetConfig={parser:b.model.escapedParser,strategies:[b.model.defaultFetchStrategy]},b.model.escapedSetConfig={parser:b.model.escapedParser,strategies:[b.model.defaultFetchStrategy,b.model.defaultCreatorStrategy]},b.initSimpleModel=function(a,b){return a.model=b||{},a.model},b.initRelayModel=function(a,b){return b},b.isModelComplete=function(a){return a.model!==b.inEvaluationMarker},b.enlistModelComponent=function(a){var c=b.getInstantiator(a),d=c.modelTransactions.init[a.id];return d||(d={that:a,applier:b.getForComponent(a,"applier"),complete:b.isModelComplete(a)},c.modelTransactions.init[a.id]=d),d},b.clearLinkCounts=function(a,c){b.each(a,function(b,d){"number"==typeof b?a[d]=0:c&&b.options&&"number"==typeof b.options.relayCount&&(b.options.relayCount=0)})},b.sortCompleteLast=function(a,b){return(a.completeOnInit?1:0)-(b.completeOnInit?1:0)},b.operateInitialTransaction=function(a,c){var d,e=b.allocateGuid(),f=b.getModelTransactionRec(a,e),g=b.transform(c,function(a){return d=a.that.applier.initiate("init",e),f[a.that.applier.applierId]={transaction:d},d}),h=b.values(c).sort(b.sortCompleteLast);b.each(h,function(a){var c=a.that,d=g[c.id];a.completeOnInit?b.initModelEvent(c,d,c.applier.changeListeners.listeners):b.each(a.initModels,function(a){d.fireChangeRequest({type:"ADD",segs:[],value:a}),b.clearLinkCounts(f,!0)});var e=b.shadowForComponent(c);e.modelComplete=!0}),d.commit()},b.deenlistModelComponent=function(a){var c=b.getInstantiator(a),d=c.modelTransactions.init;a.model=void 0,d[a.id].complete=!0;var e=b.find_if(d,function(a){return a.complete!==!0});e||(b.operateInitialTransaction(c,d),c.modelTransactions.init={})},b.transformToAdapter=function(a,c){var d={};return d[c]=a,function(a,c){b.model.transformWithRules(c,d,{finalApplier:a})}},b.parseModelReference=function(a,c){var d=b.parseContextReference(c);return d.segs=a.applier.parseEL(d.path),d},b.parseValidModelReference=function(a,c,d){var e,f,g=function(a){b.fail("Error in "+c+": "+d+a)};return"{"===d.charAt(0)?(e=b.parseModelReference(a,d),"model"!==e.segs[0]?g(' must be a reference into a component model beginning with "model"'):(e.modelSegs=e.segs.slice(1),delete e.path),f=b.resolveContext(e.context,a),f||g(" must be a reference to an existing component")):(f=a,e={path:d,modelSegs:a.applier.parseEL(d)}),f.applier||b.getForComponent(f,["applier"]),f.applier||g(" must be a reference to a component with a ChangeApplier (descended from fluid.modelComponent)"),e.that=f,e.applier=f.applier,e.path||(e.path=f.applier.composeSegments.apply(null,e.modelSegs)),e},b.getModelTransactionRec=function(a,c){c||b.fail("Cannot get transaction record without transaction id");var d=a.modelTransactions[c];return d||a.free||(d=a.modelTransactions[c]={},d.externalChanges={}),d},b.recordChangeListener=function(a,c,d){var e=b.shadowForComponent(a);b.recordListener(c.modelChanged,d,e)},b.registerDirectChangeRelay=function(a,c,d,e,f,g,h){var i=b.getInstantiator(a),j=h.targetApplier||a.applier,k=h.sourceApplier||d.applier,l=j.applierId;c=b.makeArray(c),e=e?b.makeArray(e):e;var m=function(a,d,k,m,n,o){var p=n.id,q=b.getModelTransactionRec(i,p);o&&n&&!q[o.applierId]&&(q[o.applierId]={transaction:n});var r=q[l];q[f]=q[f]||0;var s=!0;if(s){if(++q[f],!r){var t=j.initiate("relay",p);r=q[l]={transaction:t,options:h}}g&&!h.targetApplier?g(r.transaction,h.sourceApplier?void 0:a,e,c):void 0!==a&&r.transaction.fireChangeRequest({type:"ADD",segs:c,value:a})}};e&&k.modelChanged.addListener({isRelay:!0,segs:e,transactional:h.transactional},m),d&&(b.recordChangeListener(d,k,m),a!==d&&b.recordChangeListener(a,k,m))},b.connectModelRelay=function(a,c,d,e,f){function g(a){var c=b.enlistModelComponent(a);if(c.complete){var d=b.shadowForComponent(a);d.modelComplete&&(c.completeOnInit=!0)}}var h=b.allocateGuid();g(d),g(a),f.update?f.targetApplier?b.registerDirectChangeRelay(a,c,d,e,h,null,{transactional:!1,targetApplier:f.targetApplier,relayCount:f.relayCount,update:f.update}):b.registerDirectChangeRelay(d,e,a,[],h+"-transform",f.forwardAdapter,{transactional:!0,sourceApplier:f.forwardApplier}):(b.registerDirectChangeRelay(d,e,a,c,h,f.forwardAdapter,{transactional:!1}),c&&b.registerDirectChangeRelay(a,c,d,e,h,f.backwardAdapter,{transactional:!1}))},b.model.guardedAdapter=function(a,c,d,e){var f=a.modelRelay===b.inEvaluationMarker,g=c[f?"init":"live"];g&&d.apply(null,e)},b.makeTransformPackage=function(a,c,d,e,f,g){var h={forwardHolder:{model:c},backwardHolder:{model:null}};h.generateAdapters=function(a){h.forwardAdapterImpl=b.transformToAdapter(a?a.newHolder.model:h.forwardHolder.model,e),null!==d&&(h.backwardHolder.model=b.model.transform.invertConfiguration(c),h.backwardAdapterImpl=b.transformToAdapter(h.backwardHolder.model,d))},h.forwardAdapter=function(c,d){void 0===d&&h.generateAdapters(),b.model.guardedAdapter(a,f,h.forwardAdapterImpl,arguments)},h.runTransform=function(a){a.commit(),a.reset()},h.forwardApplier=b.makeNewChangeApplier(h.forwardHolder),h.forwardApplier.isRelayApplier=!0,h.invalidator=b.makeEventFirer({name:"Invalidator for model relay with applier "+h.forwardApplier.applierId}),null!==d&&(h.backwardApplier=b.makeNewChangeApplier(h.backwardHolder),h.backwardAdapter=function(){b.model.guardedAdapter(a,g,h.backwardAdapterImpl,arguments)}),h.update=h.invalidator.fire;var i={relayCount:0,targetApplier:h.forwardApplier,update:h.update,refCount:0};return h.forwardHolder.model=b.parseImplicitRelay(a,c,[],i),h.refCount=i.refCount,h.generateAdapters(),h.invalidator.addListener(h.generateAdapters),h.invalidator.addListener(h.runTransform),h},b.singleTransformToFull=function(b){var c=a.extend(!0,{valuePath:""},b);return{"":{transform:c}}},b.model.relayConditions={initOnly:{init:!0,live:!1},liveOnly:{init:!1,live:!0},never:{init:!1,live:!1},always:{init:!0,live:!0}},b.model.parseRelayCondition=function(a){return b.model.relayConditions[a||"always"]},b.parseModelRelay=function(a,c){var d=c.source?b.parseValidModelReference(a,'modelRelay record member "source"',c.source):{path:null,modelSegs:null},e=b.parseValidModelReference(a,'modelRelay record member "target"',c.target),f=c.singleTransform?b.singleTransformToFull(c.singleTransform):c.transform;f||b.fail('Cannot parse modelRelay record without element "singleTransform" or "transform":',c);var g=b.model.parseRelayCondition(c.forward),h=b.model.parseRelayCondition(c.backward),i=b.makeTransformPackage(a,f,d.path,e.path,g,h);0===i.refCount?b.connectModelRelay(d.that||a,d.modelSegs,e.that,e.modelSegs,{forwardAdapter:i.forwardAdapter,backwardAdapter:i.backwardAdapter}):b.connectModelRelay(d.that||a,d.modelSegs,e.that,e.modelSegs,i)},b.parseImplicitRelay=function(a,c,d,e){var f;if("string"==typeof c&&"{"===c.charAt(0)){var g=b.parseModelReference(a,c),h=b.resolveContext(g.context,a);if("model"===g.segs[0]){var i=g.segs.slice(1);++e.refCount,b.connectModelRelay(a,d,h,i,e)}else f=b.getForComponent(h,g.segs)}else b.isPrimitive(c)||!b.isPlainObject(c)?f=c:c.expander&&b.isPlainObject(c.expander)?f=b.expandOptions(c,a):(f=b.freshContainer(c),b.each(c,function(c,g){d.push(g);var h=b.parseImplicitRelay(a,c,d,e);void 0!==h&&(f[g]=h),d.pop()}));return f},b.model.notifyExternal=function(a){var c=a?b.values(a.externalChanges):[];c.sort(b.priorityComparator);for(var d=0;d<c.length;++d){var e=c[d],f=e.args[5];f.destroyed||e.listener.apply(null,e.args)}b.clearLinkCounts(a,!0)},b.model.commitRelays=function(a,c){var d=a.modelTransactions[c];b.each(d,function(a){a.transaction&&(a.transaction.commit("relay"),a.transaction.reset())})},b.model.updateRelays=function(a,c){var d=a.modelTransactions[c],e=0;return b.each(d,function(a){a.options&&a.transaction&&a.transaction.changeRecord.changes>0&&a.options.relayCount<2&&a.options.update&&(a.options.relayCount++,b.clearLinkCounts(d),a.options.update(a.transaction,d),++e)}),e},b.establishModelRelay=function(a,c,d,e,f){function g(a){for(;b.model.updateRelays(l,a.id)>0;);}function h(a,c,d){"relay"!==d&&b.model.commitRelays(l,a.id)}function i(a,c,d){"relay"!==d&&(b.model.notifyExternal(l.modelTransactions[a.id]),delete l.modelTransactions[a.id])}b.mergeModelListeners(a,d);var j=b.enlistModelComponent(a);b.each(e,function(c){b.parseModelRelay(a,c)});var k=b.transform(c,function(c){return b.parseImplicitRelay(a,c,[],{refCount:0})});j.initModels=k;var l=b.getInstantiator(a);return f.preCommit.addListener(g),f.preCommit.addListener(h),f.postCommit.addListener(i),b.deenlistModelComponent(a),f.holder.model},b.defaults("fluid.commonModelComponent",{gradeNames:["fluid.littleComponent","autoInit"],mergePolicy:{modelListeners:b.makeMergeListenersPolicy(b.arrayConcatPolicy)}}),b.defaults("fluid.modelComponent",{gradeNames:["fluid.commonModelComponent","autoInit"],members:{model:"@expand:fluid.initSimpleModel({that}, {that}.options.model)",applier:"@expand:fluid.makeChangeApplier({that}.model, {that}.options.changeApplierOptions)",modelListeners:"@expand:fluid.mergeModelListeners({that}, {that}.options.modelListeners)"},mergePolicy:{model:"preserve"}}),b.defaults("fluid.modelRelayComponent",{gradeNames:["fluid.commonModelComponent","fluid.eventedComponent","autoInit"],changeApplierOptions:{relayStyle:!0,cullUnchanged:!0},members:{model:"@expand:fluid.initRelayModel({that}, {that}.modelRelay)",applier:"@expand:fluid.makeNewChangeApplier({that}, {that}.options.changeApplierOptions)",modelRelay:"@expand:fluid.establishModelRelay({that}, {that}.options.model, {that}.options.modelListeners, {that}.options.modelRelay, {that}.applier)"},mergePolicy:{model:{noexpand:!0,func:b.arrayConcatPolicy},modelRelay:{noexpand:!0,func:b.arrayConcatPolicy}}}),b.defaults("fluid.standardComponent",{gradeNames:["fluid.modelComponent","fluid.eventedComponent","autoInit"]}),b.defaults("fluid.standardRelayComponent",{gradeNames:["fluid.modelRelayComponent","autoInit"]}),b.modelChangedToChange=function(a,c){var d=c[0],e=c[1],f=c[3];return a?{value:c[0],oldValue:c[1],path:c[2]}:{value:b.get(d,f),oldValue:b.get(e,f),path:f}},b.resolveModelListener=function(a,c,d){var e=function(){if(!b.isDestroyed(a)){var e=b.modelChangedToChange(d,arguments),f=[e],g={change:e,arguments:f};c.args&&(f=b.expandOptions(c.args,a,{},g)),b.event.invokeListener(c.listener,b.makeArray(f))}};return b.event.impersonateListener(c.listener,e),e},b.mergeModelListeners=function(a,c){var d=0;b.each(c,function(c,e){"string"==typeof c&&(c={funcName:c});var f=b.event.resolveListenerRecord(c,a,"modelListeners",null,!1),g=b.parseValidModelReference(a,"modelListeners entry",e),h=g.applier.preCommit;b.each(f.records,function(c){function e(){if(h&&b.isModelComplete(g.that)){var c=g.applier.initiate("init");b.initModelEvent(a,c,[i]),c.commit()}}var f=b.resolveModelListener(a,c,h),i={listener:f,listenerIndex:d,segs:g.modelSegs,path:g.path,includeSource:c.includeSource,excludeSource:c.excludeSource,priority:c.priority,guardSource:c.guardSource,transactional:!0};++d,c.guardSource?b.addSourceGuardedListener(g.applier,i,c.guardSource,f,"modelChanged",c.namespace,c.softNamespace):g.applier.modelChanged.addListener(i,f,c.namespace,c.softNamespace),b.recordChangeListener(a,g.applier,f),a===g.that||b.isModelComplete(a)||a.events.onCreate.addListener(e)})})},b.addSourceGuardedListener=function(a,c,d,e,f,g,h){f=f||"modelChanged";var i=function(b,c,f,g){return a.hasChangeSource(d,g)?void 0:e.apply(null,arguments)};b.event.impersonateListener(e,i),a[f].addListener(c,i,g,h)},b.fireSourcedChange=function(a,b,c,d){a.fireChangeRequest({path:b,value:c,source:d})},b.requestChanges=function(a,b){for(var c=0;c<b.length;++c)a.fireChangeRequest(b[c])},b.bindRequestChange=function(a){a.requestChange=a.change=function(b,c,d){var e={path:b,value:c,type:d};a.fireChangeRequest(e)}},b.identifyChangeListener=function(a){return b.event.identifyListener(a)||a},b.typeCode=function(a){return b.isPrimitive(a)||!b.isPlainObject(a)?"primitive":b.isArrayable(a)?"array":"object"},b.model.isChangedPath=function(a,b){for(var c=0;c<=b.length;++c){if("string"==typeof a)return!0;c<b.length&&a&&(a=a[b[c]])}return!1},b.model.setChangedPath=function(a,c,d){var e=function(e){c.unshift(e),b.model.setSimple(a,c,d),c.shift()};b.model.isChangedPath(a.changeMap,c)||(++a.changes,e("changeMap")),b.model.isChangedPath(a.deltaMap,c)||(++a.deltas,e("deltaMap"))},b.model.fetchChangeChildren=function(a,c,d,e,f){b.each(e,function(e,g){d[c]=g,b.model.applyChangeStrategy(a,g,c,d,e,f),d.length=c})},b.model.isSameValue=function(a,b){if("number"!=typeof a||"number"!=typeof b)return a===b;if(a===b)return!0;var c=Math.abs((a-b)/b);return 1e-12>c},b.model.applyChangeStrategy=function(a,c,d,e,f,g){var h=a[c],i=b.typeCode(f),j=b.typeCode(h),k=b.NO_VALUE;"primitive"===i?b.model.isSameValue(h,f)||(k=f,++g.unchanged):(j!==i||"array"===i&&f.length!==h.length)&&(k=b.freshContainer(f)),k!==b.NO_VALUE&&(a[c]=k,g.changeMap&&b.model.setChangedPath(g,e,g.inverse?"DELETE":"ADD")),"primitive"!==i&&b.model.fetchChangeChildren(a[c],d+1,e,f,g)},b.model.stepTargetAccess=function(a,c,d,e,f,g){for(var h=e;f>h;++h){var i=a[d[h]];a=b.model.traverseWithStrategy(a,d,h,g["ADD"===c?"resolverSetConfig":"resolverGetConfig"],d.length-h-1),i!==a&&g.changeMap&&b.model.setChangedPath(g,d.slice(0,h+1),"ADD")}return{root:a,last:d[f]}},b.model.defaultAccessorConfig=function(a){return a=a||{},a.resolverSetConfig=a.resolverSetConfig||b.model.defaultSetConfig,a.resolverGetConfig=a.resolverGetConfig||b.model.defaultGetConfig,a},b.model.applyHolderChangeRequest=function(a,c,d){d=b.model.defaultAccessorConfig(d),d.deltaMap=d.changeMap?{}:null,d.deltas=0;var e,f=c.segs.length,g=0===f;if(g?e={root:a,last:"model"}:(a.model||(a.model={},b.model.setChangedPath(d,[],d.inverse?"DELETE":"ADD")),e=b.model.stepTargetAccess(a.model,c.type,c.segs,0,f-1,d)),"ADD"===c.type){var h=c.value,i=b.makeArray(c.segs);b.model.applyChangeStrategy(e.root,e.last,f-1,i,h,d,g)}else"DELETE"===c.type?e.root&&void 0!==e.root[e.last]&&(delete e.root[e.last],d.changeMap&&b.model.setChangedPath(d,c.segs,"DELETE")):b.fail("Unrecognised change type of "+c.type);return d.deltas?d.deltaMap:null},b.model.diff=function(a,c,d){d=d||{changes:0,unchanged:0,changeMap:{}};var e,f=b.typeCode(a),g=b.typeCode(c);if("primitive"===f&&"primitive"===g)e=b.model.isSameValue(a,c);else if("primitive"===f^"primitive"===g)e=!1;else{var h={model:b.copy(a)};b.model.applyHolderChangeRequest(h,{value:c,segs:[],type:"ADD"},d);var i={model:b.copy(c)};d.inverse=!0,b.model.applyHolderChangeRequest(i,{value:a,segs:[],type:"ADD"},d),e=0===d.changes}return e===!1&&0===d.changes?(d.changes=1,d.changeMap=void 0===c?"DELETE":"ADD"):e===!0&&0===d.unchanged&&(d.unchanged=1),e},b.matchChanges=function(a,c,d){for(var e=d.model,f=a,g=["model"],h=!1,i=[],j=0;j<c.length;++j){var k=c[j];"*"===k?j===c.length-1?h=!0:b.fail("Wildcard specification in modelChanged listener is only supported for the final path segment: "+c.join(".")):(g.push(k),f=b.isPrimitive(f)?f:f[k],e=e?e[k]:void 0)}return f&&(h?b.each(e,function(a,b){i.push(g.concat(b))}):i.push(g)),i},b.storeExternalChange=function(a,c,d,e,f){var g=c.composeSegments.apply(null,d),h=[c.applierId,b.event.identifyListener(e.listener),e.listenerIndex,g],i=h.join("|");a.externalChanges[i]={listener:e.listener,priority:e.priority,args:f}},b.isExcludedChangeSource=function(a,b){if(!b.excludeSource)return!1;var c=b.excludeSource["*"];for(var d in a.sources)b.excludeSource[d]&&(c=!0),b.includeSource[d]&&(c=!1);return c},b.notifyModelChanges=function(a,c,d,e,f,g,h,i){for(var j=b.getInstantiator(i),k=g&&b.getModelTransactionRec(j,g.id),l=0;l<a.length;++l)for(var m=a[l],n=b.matchChanges(c,m.segs,d),o=0;o<n.length;++o){if(h.destroyed)return;var p=n[o];m.listener=b.event.resolveListener(m.listener);var q=[b.model.getSimple(d,p),b.model.getSimple(e,p),p.slice(1),f,g,h];if(!m.isRelay){var r=b.model.diff(q[0],q[1]);if(r)continue;var s=b.isExcludedChangeSource(g,m);if(s)continue}k&&!m.isRelay&&m.transactional?b.storeExternalChange(k,h,p,m,q):m.listener.apply(null,q)}},b.bindELMethods=function(a){a.parseEL=function(c){return b.model.pathToSegments(c,a.options.resolverSetConfig)},a.composeSegments=function(){return a.options.resolverSetConfig.parser.compose.apply(null,arguments)}},b.initModelEvent=function(a,c,d){b.notifyModelChanges(d,"ADD",c.oldHolder,b.emptyHolder,null,c,a)},b.emptyHolder={model:void 0},b.makeNewChangeApplier=function(a,c){function d(a){a.type||(a.type="ADD"),a.segs=a.segs||f.parseEL(a.path)}c=b.model.defaultAccessorConfig(c);var e=b.allocateGuid(),f={applierId:e,holder:a,changeListeners:{listeners:[],transListeners:[]},options:c,modelChanged:{},preCommit:b.makeEventFirer({name:"preCommit event for ChangeApplier "}),postCommit:b.makeEventFirer({name:"postCommit event for ChangeApplier "})};return f.destroy=function(){f.preCommit.destroy(),f.postCommit.destroy(),f.destroyed=!0},f.modelChanged.addListener=function(a,c,d,e){a="string"==typeof a?{path:a}:b.copy(a),a.id=b.event.identifyListener(c),a.namespace=d,a.softNamespace=e,"string"==typeof c&&(c={globalName:c}),a.listener=c,a.transactional!==!1&&(a.transactional=!0),a.segs=a.segs||f.parseEL(a.path);var g=f.changeListeners[a.transactional?"transListeners":"listeners"];a.excludeSource=b.arrayToHash(b.makeArray(a.excludeSource||(a.includeSource?"*":void 0))),a.includeSource=b.arrayToHash(b.makeArray(a.includeSource)),a.priority=b.event.mapPriority(a.priority,g.length),g.push(a)},f.modelChanged.removeListener=function(a){var c=b.event.identifyListener(a),d="string"==typeof a?a:null,e=function(a){return a.id===c||a.namespace===d};b.remove_if(f.changeListeners.listeners,e),b.remove_if(f.changeListeners.transListeners,e)},f.modelChanged.isRelayEvent=!0,f.fireChangeRequest=function(a){var b=f.initiate();b.fireChangeRequest(a),b.commit()},f.initiate=function(e,g){e=e||"local";var h="relay"===e,i={instanceId:b.allocateGuid(),id:g||b.allocateGuid(),sources:{},changeRecord:{
resolverSetConfig:c.resolverSetConfig,resolverGetConfig:c.resolverGetConfig},reset:function(){i.oldHolder=a,i.newHolder={model:b.copy(a.model)},i.changeRecord.changes=0,i.changeRecord.unchanged=0,i.changeRecord.changeMap={}},commit:function(c){if(f.preCommit.fire(i,f,c),i.changeRecord.changes>0){var d={model:a.model};a.model=i.newHolder.model,b.notifyModelChanges(f.changeListeners.transListeners,i.changeRecord.changeMap,a,d,null,i,f,a)}h||f.postCommit.fire(i,f,c)},fireChangeRequest:function(c){d(c),c.transactionId=i.id;var e=b.model.applyHolderChangeRequest(i.newHolder,c,i.changeRecord);b.notifyModelChanges(f.changeListeners.listeners,e,i.newHolder,a,c,i,f,a)}};return i.sources[e]=!0,i.reset(),b.bindRequestChange(i),i},f.hasChangeSource=function(a,b){return b?b[a]:!1},b.bindRequestChange(f),b.bindELMethods(f),f},b.pathUtil.getPathSegment=function(a,b){return e(f,a,b),f[0]},b.pathUtil.getHeadPath=function(a){return b.pathUtil.getPathSegment(a,0)},b.pathUtil.getFromHeadPath=function(a){var b=e(null,a,0);return b===a.length?"":a.substring(b+1)},b.pathUtil.getToTailPath=function(a){var b=c(a);return-1===b?"":a.substring(0,b)},b.pathUtil.getTailPath=function(a){var d=c(a);return b.pathUtil.getPathSegment(a,d+1)},b.pathUtil.matchSegments=function(a,b,c,d){if(d-c!==a.length)return!1;for(var e=c;d>e;++e)if(b[e]!==a[e-c])return!1;return!0},b.pathUtil.getExcessPath=function(a,c){var d=c.indexOf(a);return 0!==d&&b.fail("Path "+a+" is not a prefix of path "+c),a.length===c.length?"":("."!==c[a.length]&&b.fail("Path "+a+" is not properly nested in path "+c),c.substring(a.length+1))},b.pathUtil.matchPath=function(a,c,d){for(var e=[];;){if(""===c^""===a&&d)return null;if(!a||!c)break;var f=b.pathUtil.getHeadPath(a),g=b.pathUtil.getHeadPath(c);if("*"!==f&&f!==g)return null;e.push(g),a=b.pathUtil.getFromHeadPath(a),c=b.pathUtil.getFromHeadPath(c)}return e},b.model.isNullChange=function(a,c,d){if("ADD"===c.type&&!c.forceChange){var e=b.get(a,c.segs,d);if(e===c.value)return!0}},b.model.applyChangeRequest=function(c,d,e){var f=b.model.accessWithStrategy(c,d.path,b.VALUE,e||b.model.defaultSetConfig,null,!0),g=f.segs[f.segs.length-1];"ADD"===d.type||"MERGE"===d.type?0===f.segs.length||"MERGE"===d.type&&f.root[g]?("ADD"===d.type&&b.clear(f.root),a.extend(!0,0===f.segs.length?f.root:f.root[g],d.value)):f.root[g]=d.value:"DELETE"===d.type&&(0===f.segs.length?b.clear(f.root):delete f.root[g])},b.makeChangeApplier=function(a,c){return b.makeHolderChangeApplier({model:a},c)},b.makeHolderChangeApplier=function(a,c){function e(a){if(!a)return null;var c=function(a){return function(d,e,f){var g=a(d,e,f);return g===!1?!1:b.model.isNullChange(d,e)?(c.culled=!0,!1):void 0}};return c}function f(a,c){var d=c,e=!1,f=Number.MAX_VALUE;"string"==typeof c&&(c={path:c}),d=c.path,e=c.transactional,void 0!==c.priority&&(f=c.priority),"!"===d.charAt(0)&&(e=!0,d=d.substring(1));var g=function(c,g,h){var i=b.event.identifyListener(a),j=g.guids[i];if(j&&h)h&&(j.accumulate||(j.accumulate=[]),j.accumulate.push(h));else{var k=b.pathUtil.matchPath(d,c);if(null!==k){var l={match:k,pathSpec:d,listener:a,priority:f,transactional:e};h&&(l.accumulate=[h]),g.guids[i]=l;var m=e?"transListeners":"listeners";g[m].push(l),g.all.push(l)}}};return b.event.impersonateListener(a,g),g}function g(a,b,c,d,e){return p[a].fireToListeners(b[d],c,e)}function h(a,b){return a.priority-b.priority}function i(a,b,c,d){p[a].fire(b,c,d),c.all.sort(h),c.listeners.sort(h),c.transListeners.sort(h)}function j(){return{guids:{},all:[],listeners:[],transListeners:[]}}function k(a,b){var c=j();return i(a,b,c),c}function l(a,b,c,d){var e=k(a,b);return g(a,e,c,"all",d)}function m(a,b){a[b]={addListener:function(a,c,d,e){p[b].addListener(f(c,a),d,null,null,e)},removeListener:function(a){p[b].removeListener(a)}}}function n(a){a.type||(a.type="ADD"),a.segs=r.parseEL(a.path)}function o(a,b,c,d,e,f){for(var g=j(),h=0;h<c.length;++h)i(a,c[h].path,g,c[h]);for(var k=0;k<g[b].length;++k){var l=g[b][k];void 0!==e&&(d[e]=l.accumulate),void 0!==f&&(d[f]=l.match);var m=l.listener.apply(null,d);if(m===!1)return!1}}c=b.model.defaultAccessorConfig(c);var p={guards:b.makeEventFirer({preventable:!0,name:"guard event"}),postGuards:b.makeEventFirer({preventable:!0,name:"postGuard event"}),modelChanged:b.makeEventFirer({name:"modelChanged event"})},q=b.threadLocal(function(){return{sources:{}}}),r={applierId:b.allocateGuid(),holder:a,options:c,destroy:b.identity};m(r,"guards"),m(r,"postGuards"),m(r,"modelChanged");var s={fireChangeRequest:function(a){r.fireChangeRequest(a,!0)}};return b.bindRequestChange(s),r.fireChangeRequest=function(a){n(a);var b=r.initiate();b.fireChangeRequest(a),b.commit()},r.fireChangeRequest=d(r.fireChangeRequest,q),b.bindRequestChange(r),b.bindELMethods(r),r.initiate=function(f){var g=!1,h=[];c.thin?f=a.model:(f=f||{},b.model.copyModel(f,a.model));var i={commit:function(){var d;if(g)return!1;var e=o("postGuards","transListeners",h,[f,null,i],1);return e===!1||g?!1:(c.thin?d=a.model:(d={},b.model.copyModel(d,a.model),b.clear(a.model),b.model.copyModel(a.model,f)),void o("modelChanged","all",h,[a.model,d,null,null],2,3))},fireChangeRequest:function(d){if(n(d),!c.cullUnchanged||!b.model.isNullChange(a.model,d,c.resolverGetConfig)){var j=e(c.cullUnchanged),k=l("guards",d.path,[f,d,i],j);k!==!1||j&&j.culled||(g=!0),g||j&&j.culled||(b.model.applyChangeRequest(f,d,c.resolverSetConfig),h.push(d))}}};return i.fireChangeRequest=d(i.fireChangeRequest,q),b.bindRequestChange(i),i},r.hasChangeSource=function(a){return q().sources[a]>0},r},b.makeSuperApplier=function(){var a=[],c={};return c.addSubApplier=function(b,c){a.push({path:b,subApplier:c})},c.fireChangeRequest=function(c){for(var d=0;d<a.length;++d){var e=a[d].path;if(0===c.path.indexOf(e)){var f=c.path.substring(e.length+1),g=b.copy(c);g.path=f,a[d].subApplier.fireChangeRequest(g)}}},b.bindRequestChange(c),c},b.attachModel=function(a,c,d){for(var e=b.model.parseEL(c),f=0;f<e.length-1;++f){var g=e[f],h=a[g];h||(a[g]=h={}),a=h}a[e[e.length-1]]=d},b.assembleModel=function(a){var c={},d=b.makeSuperApplier(),e={model:c,applier:d};for(var f in a){var g=a[f];b.attachModel(c,f,g.model),g.applier&&d.addSubApplier(f,g.applier)}return e}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.defaults("fluid.transformFunction",{gradeNames:"fluid.function"}),b.defaults("fluid.standardInputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.standardOutputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.multiInputTransformFunction",{gradeNames:"fluid.transformFunction"}),b.defaults("fluid.standardTransformFunction",{gradeNames:["fluid.standardInputTransformFunction","fluid.standardOutputTransformFunction"]}),b.defaults("fluid.lens",{gradeNames:"fluid.transformFunction",invertConfiguration:null}),b.model.transform.pathToRule=function(a){return{transform:{type:"fluid.transforms.value",inputPath:a}}},b.model.transform.literalValueToRule=function(a){return{transform:{type:"fluid.transforms.literalValue",value:a}}},b.model.composePaths=function(a,b){return a=0===a?"0":a||"",b=0===b?"0":b||"",a?b?a+"."+b:a:b},b.model.transform.accumulateInputPath=function(a,c,d){void 0!==a&&d.push(b.model.composePaths(c.inputPrefix,a))},b.model.transform.accumulateStandardInputPath=function(a,c,d,e){b.model.transform.getValue(void 0,c[a],d),b.model.transform.accumulateInputPath(c[a+"Path"],d,e)},b.model.transform.accumulateMultiInputPaths=function(a,c,d,e){b.each(a,function(a,f){b.model.transform.accumulateStandardInputPath(f,c,d,e)})},b.model.transform.getValue=function(a,c,d){var e;return void 0!==a&&(e=b.get(d.source,b.model.composePaths(d.inputPrefix,a),d.resolverGetConfig)),void 0===e&&(e=b.isPrimitive(c)?c:d.expand(c)),e},b.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN={},b.model.transform.setValue=function(a,c,d){var e=b.copy(c),f=b.model.composePaths(d.outputPrefix,a);return void 0!==e&&d.applier.requestChange(f,e),a?b.model.transform.NONDEFAULT_OUTPUT_PATH_RETURN:e},b.model.transform.resolveParam=function(a,c,d,e){var f=b.model.transform.getValue(a[d+"Path"],a[d],c);return void 0!==f?f:e},b.model.transform.matchValue=function(a,c,d){var e={changes:0,unchanged:0,changeMap:{}};return b.model.diff(a,c,e),0===e.unchanged?0:d?0xffffff000000-16777216*e.changes+e.unchanged:e.changes?0:0xffffff000000+e.unchanged},b.firstDefined=function(a,b){return void 0===a?b:a},b.model.transform.prefixApplier=function(a,b){a.inputPrefix&&b.inputPrefixOp.push(a.inputPrefix),a.outputPrefix&&b.outputPrefixOp.push(a.outputPrefix),b.expand(a.value),a.inputPrefix&&b.inputPrefixOp.pop(),a.outputPrefix&&b.outputPrefixOp.pop()},b.defaults("fluid.model.transform.prefixApplier",{gradeNames:["fluid.transformFunction"]}),b.model.makePathStack=function(a,c){var d=a[c+"Stack"]=[];return a[c]="",{push:function(e){var f=b.model.composePaths(a[c],e);d.push(a[c]),a[c]=f},pop:function(){a[c]=d.pop()}}},b.model.transform.aliasStandardInput=function(a){return{value:void 0===a.value?a.input:a.value,valuePath:void 0===a.valuePath?a.inputPath:a.valuePath}},b.model.transform.doTransform=function(a,c,d){var e=d.defaults,f=b.getGlobalValue(d.typeName);"function"!=typeof f&&b.fail("Transformation record specifies transformation function with name "+a.type+" which is not a function - ",f),b.hasGrade(e,"fluid.transformFunction")||(e=b.defaults("fluid.standardTransformFunction"));var g=[a,c];if(b.hasGrade(e,"fluid.standardInputTransformFunction")){var h=b.model.transform.aliasStandardInput(a),i=b.model.transform.getValue(h.valuePath,h.value,c);if(g.unshift(i),void 0===i)return void 0}else if(b.hasGrade(e,"fluid.multiInputTransformFunction")){var j={};b.each(e.inputVariables,function(d,e){j[e]=function(){var f=b.model.transform.getValue(a[e+"Path"],a[e],c);return f=void 0===f&&null!==d?d:f}}),g.unshift(j)}var k=f.apply(null,g);if(b.hasGrade(e,"fluid.standardOutputTransformFunction")){var l=void 0!==a.outputPath?a.outputPath:d.doOutput?"":void 0;void 0!==l&&void 0!==k&&(b.model.transform.setValue(a.outputPath,k,c),k=void 0)}return k},b.model.transform.expandWildcards=function(a,c){b.each(c,function(c,d){var e=a.queuedTransforms;a.pathOp.push(b.pathUtil.escapeSegment(d.toString()));for(var f=0;f<e.length;++f)if(b.pathUtil.matchPath(e[f].matchPath,a.path,!0)){var g=b.copy(e[f].transformSpec);(void 0===g.inputPath||b.model.transform.hasWildcard(g.inputPath))&&(g.inputPath=""),a.inputPrefixOp.push(a.path),a.outputPrefixOp.push(a.path);var h=b.model.transform.lookupType(g.type),i=b.model.transform.doTransform(g,a,h);void 0!==i&&b.model.transform.setValue(null,i,a),a.outputPrefixOp.pop(),a.inputPrefixOp.pop()}b.isPrimitive(c)||b.model.transform.expandWildcards(a,c),a.pathOp.pop()})},b.model.transform.hasWildcard=function(a){return"string"==typeof a&&-1!==a.indexOf("*")},b.model.transform.maybePushWildcard=function(a,c){var d,e=b.model.transform.hasWildcard;return e(a.inputPath)?d=b.model.composePaths(c.inputPrefix,a.inputPath):(e(c.outputPrefix)||e(a.outputPath))&&(d=b.model.composePaths(c.outputPrefix,a.outputPath)),d?(c.queuedTransforms.push({transformSpec:a,outputPrefix:c.outputPrefix,inputPrefix:c.inputPrefix,matchPath:d}),!0):!1},b.model.sortByKeyLength=function(a){var c=b.keys(a);return c.sort(b.compareStringLength(!0))},b.model.transform.handleTransformStrategy=function(a,c,d){return b.model.transform.maybePushWildcard(a,c)?void 0:b.model.transform.doTransform(a,c,d)},b.model.transform.handleInvertStrategy=function(a,c,d){var e=d.defaults&&d.defaults.invertConfiguration;if(e){var f=b.invokeGlobalFunction(e,[a,c]);c.inverted.push(f)}},b.model.transform.handleCollectStrategy=function(a,c,d){var e=d.defaults,f=b.hasGrade(e,"fluid.standardInputTransformFunction"),g=b.hasGrade(e,"fluid.multiInputTransformFunction");if(f)b.model.transform.accumulateStandardInputPath("input",a,c,c.inputPaths);else if(g)b.model.transform.accumulateMultiInputPaths(e.inputVariables,a,c,c.inputPaths);else{var h=e.collectInputPaths;if(h){var i=b.makeArray(b.invokeGlobalFunction(h,[a,c]));c.inputPaths=c.inputPaths.concat(i)}}},b.model.transform.lookupType=function(a,c){a||b.fail("Transformation record is missing a type name: ",c),-1===a.indexOf(".")&&(a="fluid.transforms."+a);var d=b.defaults(a);return{defaults:d,typeName:a}},b.model.transform.literaliseValue=function(a){return b.isPrimitive(a)?a:{literalValue:a}},b.model.transform.processRule=function(a,c){"string"==typeof a?a=b.model.transform.pathToRule(a):void 0!==a.literalValue&&(a=b.model.transform.literalValueToRule(a.literalValue));var d;if(a.transform){var e,f;if(b.isArrayable(a.transform)){var g=a.transform;d=void 0;for(var h=0;h<g.length;++h)e=g[h],f=b.model.transform.lookupType(e.type),c.transformHandler(e,c,f)}else e=a.transform,f=b.model.transform.lookupType(e.type),d=c.transformHandler(e,c,f)}return b.isArrayable(a)&&(c.collectedFlatSchemaOpts=c.collectedFlatSchemaOpts||{},c.collectedFlatSchemaOpts[c.outputPrefix]="array"),b.each(a,function(a,d){if("transform"!==d){c.outputPrefixOp.push(d);var e=c.expand(a,c);void 0!==e&&(b.model.transform.setValue(null,e,c),e=void 0),c.outputPrefixOp.pop()}}),d},b.model.transform.makeStrategy=function(a,c,d){d=d||b.model.transform.processRule,a.expand=function(b){return d(b,a)},a.outputPrefixOp=b.model.makePathStack(a,"outputPrefix"),a.inputPrefixOp=b.model.makePathStack(a,"inputPrefix"),a.transformHandler=c},b.model.transform.invertConfiguration=function(a){var c={inverted:[]};return b.model.transform.makeStrategy(c,b.model.transform.handleInvertStrategy),c.expand(a),{transform:c.inverted}},b.model.transform.collectInputPaths=function(a){var c={inputPaths:[]};return b.model.transform.makeStrategy(c,b.model.transform.handleCollectStrategy),c.expand(a),c.inputPaths},b.model.transform.flatSchemaStrategy=function(a,c){var d=b.model.sortByKeyLength(a);return function(e,f,g,h){for(var i=c.parser.compose.apply(null,h.slice(0,g)),j=0;j<d.length;++j){var k=d[j];if(null!==b.pathUtil.matchPath(k,i,!0))return a[k]}}},b.model.transform.defaultSchemaValue=function(a){var c=b.isPrimitive(a)?a:a.type;return"array"===c?[]:{}},b.model.transform.isomorphicSchemaStrategy=function(a,c){return function(d,e,f,g){var h=b.get(a,g.slice(0,f),c);return b.isArrayable(h)?"array":"object"}},b.model.transform.decodeStrategy=function(a,c,d){return c.isomorphic?b.model.transform.isomorphicSchemaStrategy(a,d):c.flatSchema?b.model.transform.flatSchemaStrategy(c.flatSchema,d):void 0},b.model.transform.schemaToCreatorStrategy=function(a){return function(c,d,e,f){if(void 0===c[d]){var g=a(c,d,e,f);return c[d]=b.model.transform.defaultSchemaValue(g),c[d]}}},b.model.transform.sequence=function(a,c,d){for(var e=0;e<c.length;++e)a=b.model.transform(a,c[e],d);return a},b.model.compareByPathLength=function(a,b){var c=a.path.length-b.path.length;return 0===c?a.sequence-b.sequence:c},b.model.fireSortedChanges=function(a,c){a.sort(b.model.compareByPathLength),b.requestChanges(c,a)},b.model.transformWithRules=function(c,d,e){e=e||{};var f=b.model.escapedGetConfig,g=b.model.transform.decodeStrategy(c,e,f),h={source:c,target:{model:g?b.model.transform.defaultSchemaValue(g(null,"",0,[""])):{}},resolverGetConfig:f,collectedFlatSchemaOpts:void 0,queuedChanges:[],queuedTransforms:[]};b.model.transform.makeStrategy(h,b.model.transform.handleTransformStrategy),h.applier={fireChangeRequest:function(a){a.sequence=h.queuedChanges.length,h.queuedChanges.push(a)}},b.bindRequestChange(h.applier),h.expand(d);var i=b.copy(b.model.escapedSetConfig);return void 0!==h.collectedFlatSchemaOpts&&(a.extend(h.collectedFlatSchemaOpts,e.flatSchema),g=b.model.transform.flatSchemaStrategy(h.collectedFlatSchemaOpts,f)),i.strategies=[b.model.defaultFetchStrategy,g?b.model.transform.schemaToCreatorStrategy(g):b.model.defaultCreatorStrategy],h.finalApplier=e.finalApplier||b.makeNewChangeApplier(h.target,{resolverSetConfig:i}),h.queuedTransforms.length>0&&(h.typeStack=[],h.pathOp=b.model.makePathStack(h,"path"),b.model.transform.expandWildcards(h,c)),b.model.fireSortedChanges(h.queuedChanges,h.finalApplier),h.target.model},a.extend(b.model.transformWithRules,b.model.transform),b.model.transform=b.model.transformWithRules,b.transformOne=function(a){return{transformOptions:{transformer:"fluid.model.transformWithRules",config:a}}},b.transformMany=function(a){return{transformOptions:{transformer:"fluid.model.transform.sequence",config:a}}}}(b,c);var c=c||{},d=d||c;!function(a,b){"use strict";b.registerNamespace("fluid.model.transform"),b.registerNamespace("fluid.transforms"),b.defaults("fluid.transforms.value",{gradeNames:"fluid.standardTransformFunction",invertConfiguration:"fluid.transforms.value.invert"}),b.transforms.value=b.identity,b.transforms.value.invert=function(a,c){var d=b.copy(a);return d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d},b.transforms.identity=b.transforms.value,b.defaults("fluid.transforms.identity",{gradeNames:"fluid.transforms.value"}),b.defaults("fluid.transforms.literalValue",{gradeNames:"fluid.standardOutputTransformFunction"}),b.transforms.literalValue=function(a){return a.value},b.defaults("fluid.transforms.arrayValue",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.arrayValue=b.makeArray,b.defaults("fluid.transforms.count",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.count=function(a){return b.makeArray(a).length},b.defaults("fluid.transforms.round",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.round=function(a){return Math.round(a)},b.defaults("fluid.transforms.delete",{gradeNames:"fluid.transformFunction"}),b.transforms["delete"]=function(a,c){var d=b.model.composePaths(c.outputPrefix,a.outputPath);c.applier.requestChange(d,null,"DELETE")},b.defaults("fluid.transforms.firstValue",{gradeNames:"fluid.transformFunction"}),b.transforms.firstValue=function(a,c){a.values&&a.values.length||b.fail('firstValue transformer requires an array of values at path named "values", supplied',a);for(var d=0;d<a.values.length;d++){var e=a.values[d],f=c.expand(e);if(void 0!==f)return f}},b.defaults("fluid.transforms.linearScale",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.linearScale.invert",inputVariables:{value:null,factor:1,offset:0}}),b.transforms.linearScale=function(a){var b=a.value(),c=a.factor(),d=a.offset();return"number"!=typeof b||"number"!=typeof c||"number"!=typeof d?void 0:b*c+d},b.transforms.linearScale.invert=function(a,c){var d=b.copy(a);return d.factor&&(d.factor=0===d.factor?0:1/d.factor),d.offset&&(d.offset=-d.offset*(void 0!==d.factor?d.factor:1)),d.valuePath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.valuePath),d},b.defaults("fluid.transforms.binaryOp",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{left:null,right:null}}),b.transforms.binaryLookup={"===":function(a,b){return a===b},"!==":function(a,b){return a!==b},"<=":function(a,b){return b>=a},"<":function(a,b){return b>a},">=":function(a,b){return a>=b},">":function(a,b){return a>b},"+":function(a,b){return a+b},"-":function(a,b){return a-b},"*":function(a,b){return a*b},"/":function(a,b){return a/b},"%":function(a,b){return a%b},"&&":function(a,b){return a&&b},"||":function(a,b){return a||b}},b.transforms.binaryOp=function(a,c,d){var e=a.left(),f=a.right(),g=b.model.transform.getValue(void 0,c.operator,d),h=b.transforms.binaryLookup[g];return void 0===h||void 0===e||void 0===f?void 0:h(e,f)},b.defaults("fluid.transforms.condition",{gradeNames:["fluid.multiInputTransformFunction","fluid.standardOutputTransformFunction"],inputVariables:{"true":null,"false":null,condition:null}}),b.transforms.condition=function(a){var b=a.condition();return null===b?void 0:a[b?"true":"false"]()},b.defaults("fluid.transforms.valueMapper",{gradeNames:["fluid.transformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.valueMapper.invert",collectInputPaths:"fluid.transforms.valueMapper.collect"}),b.model.transform.compareMatches=function(a,b){return b.matchValue-a.matchValue},b.model.transform.matchValueMapperFull=function(a,c,d){var e=c.options;0===e.length&&b.fail("valueMapper supplied empty list of options: ",c);for(var f=[],g=0;g<e.length;++g){var h=e[g],i=b.firstDefined(b.model.transform.getValue(h.inputPath,void 0,d),a),j=b.model.transform.matchValue(h.undefinedInputValue?void 0:void 0===h.inputValue?c.defaultInputValue:h.inputValue,i,c.partialMatches||h.partialMatches);f[g]={index:g,matchValue:j}}return f.sort(b.model.transform.compareMatches),f[0].matchValue<=0||e.length>1&&f[0].matchValue===f[1].matchValue?-1:f[0].index},b.transforms.valueMapper=function(a,c){a.options||b.fail('valueMapper requires a list or hash of options at path named "options", supplied ',a);var d=b.model.transform.getValue(a.inputPath,void 0,c),e=b.isArrayable(a.options)?function(d){var e=b.model.transform.matchValueMapperFull(d,a,c);return-1===e?null:a.options[e]}:function(b){return a.options[b]},f=e(d);if(f||(f=e(a.defaultInputValue)),f){var g=void 0===f.outputPath?a.defaultOutputPath:f.outputPath;c.outputPrefixOp.push(g);var h;return b.isPrimitive(f)?h=f:f.undefinedOutputValue?h=void 0:(h=b.model.transform.resolveParam(f,c,"outputValue",void 0),h=void 0===h?a.defaultOutputValue:h),"string"==typeof g&&void 0!==h&&(b.model.transform.setValue(void 0,h,c,a.merge),h=void 0),c.outputPrefixOp.pop(),h}},b.transforms.valueMapper.invert=function(a,c){var d=[],e={type:"fluid.transforms.valueMapper",options:d},f=b.isArrayable(a.options),g=function(c){return b.find(a.options,function(a){return a[c]?!0:void 0})},h=g("outputPath"),i=g("inputPath");h||(e.inputPath=b.model.composePaths(c.outputPrefix,a.defaultOutputPath)),i||(e.defaultOutputPath=b.model.composePaths(c.inputPrefix,a.inputPath));var j=b.firstDefined;return b.each(a.options,function(e,g){var k={},l=j(f?e.inputValue:g,a.defaultInputValue);void 0===l&&b.fail("Failure inverting configuration for valueMapper - inputValue could not be resolved for record "+g+": ",a),k.outputValue=b.model.transform.literaliseValue(l);var m=j(e.outputValue,a.defaultOutputValue);k.inputValue=b.model.transform.getValue(e.outputValuePath,m,c),h&&(k.inputPath=b.model.composePaths(c.outputPrefix,j(e.outputPath,a.outputPath))),i&&(k.outputPath=b.model.composePaths(c.inputPrefix,j(e.inputPath,a.inputPath))),e.outputValuePath&&(k.inputValuePath=e.outputValuePath),d.push(k)}),e},b.transforms.valueMapper.collect=function(a,c){var d=[];return b.model.transform.accumulateInputPath(a.inputPath,c,d),b.each(a.options,function(a){b.model.transform.accumulateInputPath(a.inputPath,c,d)}),d},b.defaults("fluid.transforms.arrayToSetMembership",{gradeNames:["fluid.standardInputTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToSetMembership.invert"}),b.transforms.arrayToSetMembership=function(c,d,e){var f=d.options;c&&b.isArrayable(c)||b.fail("arrayToSetMembership didn't find array at inputPath nor passed as value.",d),f||b.fail("arrayToSetMembership requires an options block set"),void 0===d.presentValue&&(d.presentValue=!0),void 0===d.missingValue&&(d.missingValue=!1),b.each(f,function(f,g){var h=-1!==a.inArray(g,c)?d.presentValue:d.missingValue;b.model.transform.setValue(f,h,e)})},b.transforms.arrayToSetMembership.invert=function(a,c){var d=b.copy(a);delete d.inputPath,d.type="fluid.transforms.setMembershipToArray",d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath);var e={};return b.each(a.options,function(a,d){var f=b.model.composePaths(c.outputPrefix,a);e[f]=d}),d.options=e,d},b.defaults("fluid.transforms.setMembershipToArray",{gradeNames:["fluid.standardOutputTransformFunction"]}),b.transforms.setMembershipToArray=function(a,c){var d=a.options;d||b.fail("setMembershipToArray requires an options block specified"),void 0===a.presentValue&&(a.presentValue=!0),void 0===a.missingValue&&(a.missingValue=!1);var e=[];return b.each(d,function(d,f){var g=b.model.transform.getValue(f,void 0,c);g===a.presentValue&&e.push(d)}),e},b.model.transform.applyPaths=function(a,b,c){for(var d=0;d<c.length;++d)"push"===a?b.push(c[d]):b.pop()},b.model.transform.expandInnerValues=function(c,d,e,f){var g=e.inputPrefixOp,h=e.outputPrefixOp,i=b.model.transform.applyPaths;i("push",g,c),i("push",h,d);var j={};return b.each(f,function(c){var d=e.expand(c);b.isPrimitive(d)?j=d:a.extend(!0,j,d)}),i("pop",h,d),i("pop",g,c),j},b.defaults("fluid.transforms.arrayToObject",{gradeNames:["fluid.standardTransformFunction","fluid.lens"],invertConfiguration:"fluid.transforms.arrayToObject.invert"}),b.transforms.arrayToObject=function(a,c,d){void 0===c.key&&b.fail("arrayToObject requires a 'key' option.",c),b.isArrayable(a)||b.fail("arrayToObject didn't find array at inputPath.",c);var e={},f=c.key;return b.each(a,function(a,g){var h=a[f],i=typeof h;"string"!==i&&"boolean"!==i&&"number"!==i&&b.fail("arrayToObject encountered untransformable array due to missing or invalid key",a);var j=b.copy(a);delete j[f],c.innerValue&&(j=b.model.transform.expandInnerValues([d.inputPrefix,c.inputPath,g.toString()],[h],d,c.innerValue)),e[h]=j}),e},b.transforms.arrayToObject.invert=function(a,c){var d=b.copy(a);if(d.type="fluid.transforms.objectToArray",d.inputPath=b.model.composePaths(c.outputPrefix,a.outputPath),d.outputPath=b.model.composePaths(c.inputPrefix,a.inputPath),d.innerValue)for(var e=d.innerValue,f=0;f<e.length;++f)e[f]=b.model.transform.invertConfiguration(e[f]);return d},b.defaults("fluid.transforms.objectToArray",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.objectToArray=function(c,d,e){void 0===d.key&&b.fail("objectToArray requires a 'key' option.",d);var f=[],g=d.key;return b.each(c,function(c,h){var i={};i[g]=h,d.innerValue&&(c=b.model.transform.expandInnerValues([d.inputPath,h],[d.outputPath,f.length.toString()],e,d.innerValue)),a.extend(!0,i,c),f.push(i)}),f},b.defaults("fluid.transforms.limitRange",{gradeNames:"fluid.standardTransformFunction"}),b.transforms.limitRange=function(a,b){var c=b.min;if(void 0!==c){var d=b.excludeMin||0;c+=d,c>a&&(a=c)}var e=b.max;if(void 0!==e){var f=b.excludeMax||0;e-=f,a>e&&(a=e)}return a},b.defaults("fluid.transforms.free",{gradeNames:"fluid.transformFunction"}),b.transforms.free=function(a){var c=b.makeArray(a.args);return b.invokeGlobalFunction(a.func,c)}}(b,c);var c=c||{};!function(a,b){"use strict";b.defaults("fluid.commonViewComponent",{gradeNames:["fluid.littleComponent","autoInit"],initFunction:"fluid.initView",argumentMap:{container:0,options:1},members:{dom:"@expand:fluid.initDomBinder({that}, {that}.options.selectors)"}}),b.defaults("fluid.viewComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardComponent","autoInit"]}),b.defaults("fluid.viewRelayComponent",{gradeNames:["fluid.commonViewComponent","fluid.standardRelayComponent","autoInit"]}),b.dumpSelector=function(a){return"string"==typeof a?a:a.selector?a.selector:""},b.diagnoseFailedView=function(a,c,d,e){if(!c&&(b.hasGrade(d,"fluid.viewComponent")||b.hasGrade(d,"fluid.viewRelayComponent"))){var f=b.wrap(e[1]),g="Instantiation of autoInit component with type "+a+" failed, since ";f?0===f.length?b.fail(g+'selector "',b.dumpSelector(e[1]),'" did not match any markup in the document'):b.fail(g+" component creator function did not return a value"):b.fail(g+" container argument is empty")}},b.checkTryCatchParameter=function(){var a=window.location||{search:"",protocol:"file:"},c=a.search.slice(1).split("&");return b.find(c,function(a){return 0===a.indexOf("notrycatch")?!0:void 0})===!0},b.notrycatch=b.checkTryCatchParameter(),b.wrap=function(b,c){return c=c||a,!b||b.jquery?b:c(b)},b.unwrap=function(a){return a&&a.jquery&&1===a.length?a[0]:a},b.container=function(a,c,d){d&&(a=b.unwrap(a));var e=b.wrap(a,d);if(c&&(!e||0===e.length))return null;if(!e||!e.jquery||1!==e.length){"string"!=typeof a&&(a=e.selector);var f=void 0!==e.length?e.length:0;b.fail((f>1?"More than one ("+f+") container elements were":"No container element was")+" found for selector "+a)}return b.isDOMNode(e[0])||b.fail("fluid.container was supplied a non-jQueryable element"),e},b.createDomBinder=function(a,c){function d(a,c){return b.allocateSimpleId(c)+"-"+a}function e(a,b,c){f[d(a,b)]=c}var f={},g={id:b.allocateGuid()},h=a.constructor;return g.locate=function(d,f){var g,i,j;return g=c[d],i=f?f:a,i||b.fail("DOM binder invoked for selector "+d+" without container"),g?(j="function"==typeof g?h(g.call(null,b.unwrap(i))):h(g,i),j.get(0)===document&&(j=[]),j.selector||(j.selector=g,j.context=i),j.selectorName=d,e(d,i,j),j):i},g.fastLocate=function(b,c){var e=c?c:a,h=d(b,e),i=f[h];return i?i:g.locate(b,c)},g.clear=function(){f={}},g.refresh=function(b,c){var d=c?c:a;"string"==typeof b&&(b=[b]),void 0===d.length&&(d=[d]);for(var e=0;e<b.length;++e)for(var f=0;f<d.length;++f)g.locate(b[e],d[f])},g.resolvePathSegment=g.locate,g},b.expectFilledSelector=function(a,c){a&&0===a.length&&a.jquery&&b.fail(c+': selector "'+a.selector+'" with name '+a.selectorName+" returned no results in context "+b.dumpEl(a.context))},b.initView=function(c,d,e,f){var g=b.container(d,!0);if(b.expectFilledSelector(g,'Error instantiating component with name "'+c),!g)return null;var h=function(a){a.container=g},i=b.initLittleComponent(c,e,f||{gradeNames:["fluid.viewComponent"]},h);i.dom||b.initDomBinder(i);var j=i.options.jQuery;return b.log("Constructing view component "+c+" with container "+g.constructor.expando+(j?" user jQuery "+j.expando:"")+" env: "+a.expando),i},b.initDomBinder=function(a,c){return a.dom=b.createDomBinder(a.container,c||a.options.selectors||{}),a.locate=a.dom.locate,a.dom},b.findAncestor=function(a,c){for(a=b.unwrap(a);a;){if(c(a))return a;a=a.parentNode}},b.findForm=function(a){return b.findAncestor(a,function(a){return"form"===a.nodeName.toLowerCase()})},b.each(["text","html"],function(c){b[c]=function(b,d){return b=a(b),void 0===d?b[c]():b[c](d)}}),b.value=function(c,d){var e=b.unwrap(c),f=!1;if(void 0===e.nodeType&&e.length>1&&(e=e[0],f=!0),"input"!==e.nodeName.toLowerCase()||!/radio|checkbox/.test(e.type))return void 0===d?a(e).val():a(e).val(d);var g=e.name;void 0===g&&b.fail("Cannot acquire value from node "+b.dumpEl(e)+" which does not have name attribute set");var h;if(f)h=c;else{h=e.ownerDocument.getElementsByName(g);var i=b.findForm(e);h=a.grep(h,function(a){return a.name!==g?!1:!i||b.dom.isContainer(i,a)})}if(void 0===d){var j=a.map(h,function(a){return a.checked?a.value:null});return"radio"===e.type?j[0]:j}"boolean"==typeof d&&(d=d?"true":"false"),a.each(h,function(){this.checked=d instanceof Array?-1!==a.inArray(this.value,d):d===this.value})},b.BINDING_ROOT_KEY="fluid-binding-root",b.findData=function(b,c){for(;b;){var d=a.data(b,c);if(d)return d;b=b.parentNode}},b.bindFossils=function(c,d,e){a.data(c,b.BINDING_ROOT_KEY,{data:d,fossils:e})},b.boundPathForNode=function(a,c){a=b.unwrap(a);var d=a.name||a.id,e=c[d];return e?e.EL:null},b.applyBoundChange=function(a,c,d){a=b.unwrap(a),void 0===c&&(c=b.value(a)),void 0===a.nodeType&&a.length>0&&(a=a[0]);var e=b.findData(a,b.BINDING_ROOT_KEY);e||b.fail("Bound data could not be discovered in any node above "+b.dumpEl(a));var f=a.name,g=e.fossils[f];g||b.fail("No fossil discovered for name "+f+" in fossil record above "+b.dumpEl(a)),"boolean"==typeof g.oldvalue&&(c=c[0]?!0:!1);var h=e.fossils[f].EL;d?d.fireChangeRequest({path:h,value:c,source:"DOM:"+a.id}):b.set(e.data,h,c)},b.jById=function(c,d){d=d&&9===d.nodeType?d:document;var e=b.byId(c,d),f=e?a(e):[];return f.selector="#"+c,f.context=d,f},b.byId=function(a,c){c=c&&9===c.nodeType?c:document;var d=c.getElementById(a);return d?(d.id!==a&&b.fail("Problem in document structure - picked up element "+b.dumpEl(d)+" for id "+a+" without this id - most likely the element has a name which conflicts with this id"),d):null},b.getId=function(a){return b.unwrap(a).id;
},b.allocateSimpleId=function(a){var c="fluid-id-"+b.allocateGuid();return!a||b.isPrimitive(a)?c:(a=b.unwrap(a),a.id||(a.id=c),a.id)},b.defaults("fluid.ariaLabeller",{gradeNames:["fluid.viewComponent","autoInit"],labelAttribute:"aria-label",liveRegionMarkup:'<div class="liveRegion fl-hidden-accessible" aria-live="polite"></div>',liveRegionId:"fluid-ariaLabeller-liveRegion",invokers:{generateLiveElement:{funcName:"fluid.ariaLabeller.generateLiveElement",args:"{that}"},update:{funcName:"fluid.ariaLabeller.update",args:["{that}","{arguments}.0"]}},listeners:{onCreate:{func:"{that}.update",args:[null]}}}),b.ariaLabeller.update=function(a,c){if(c=c||a.options,a.container.attr(a.options.labelAttribute,c.text),c.dynamicLabel){var d=b.jById(a.options.liveRegionId);0===d.length&&(d=a.generateLiveElement()),d.text(c.text)}},b.ariaLabeller.generateLiveElement=function(b){var c=a(b.options.liveRegionMarkup);return c.prop("id",b.options.liveRegionId),a("body").append(c),c};var c="aria-labelling";b.getAriaLabeller=function(d){d=a(d);var e=b.getScopedData(d,c);return e},b.updateAriaLabel=function(d,e,f){f=a.extend({},f||{},{text:e});var g=b.getAriaLabeller(d);return g?g.update(f):(g=b.ariaLabeller(d,f),b.setScopedData(d,c,g)),g};var d={};a(document).click(function(a){for(var c=b.resolveEventTarget(a);c;){if(d[c.id])return;c=c.parentNode}b.each(d,function(b,c){b(a),delete d[c]})}),b.globalDismissal=function(a,c){b.each(a,function(a){var e=b.unwrap(a).ownerDocument===document?b.allocateSimpleId(a):b.allocateGuid();c?d[e]=c:delete d[e]})},b.now=function(){return Date.now?Date.now():(new Date).getTime()},b.deadMansBlur=function(c,d){var e={options:a.extend(!0,{},b.defaults("fluid.deadMansBlur"),d)};return e.blurPending=!1,e.lastCancel=0,e.canceller=function(a){b.log("Cancellation through "+a.type+" on "+b.dumpEl(a.target)),e.lastCancel=b.now(),e.blurPending=!1},e.noteProceeded=function(){b.globalDismissal(e.options.exclusions)},e.reArm=function(){b.globalDismissal(e.options.exclusions,e.proceed)},e.addExclusion=function(a){b.globalDismissal(a,e.proceed)},e.proceed=function(a){b.log("Direct proceed through "+a.type+" on "+b.dumpEl(a.target)),e.blurPending=!1,e.options.handler(c)},b.each(e.options.exclusions,function(c){c=a(c),b.each(c,function(b){a(b).bind("focusin",e.canceller).bind("fluid-focus",e.canceller).click(e.canceller).mousedown(e.canceller)})}),e.options.cancelByDefault?e.reArm():a(c).bind("focusout",function(a){b.log("Starting blur timer for element "+b.dumpEl(a.target));var d=b.now();b.log("back delay: "+(d-e.lastCancel)),d-e.lastCancel>e.options.backDelay&&(e.blurPending=!0),setTimeout(function(){e.blurPending&&e.options.handler(c)},e.options.delay)}),e},b.defaults("fluid.deadMansBlur",{delay:150,backDelay:100})}(b,c);var c=c||{};!function(a,b){"use strict";function c(a){return a}var d={},e={};b.fetchResources=function(a,c,d){var e=b.initLittleComponent("fluid.fetchResources",d);return e.resourceSpecs=a,e.callback=c,e.operate=function(){b.fetchResources.fetchResourcesImpl(e)},b.each(a,function(a,c){a.recurseFirer=b.makeEventFirer({name:'I/O completion for resource "'+c+'"'}),a.recurseFirer.addListener(e.operate),a.url&&!a.href&&(a.href=a.url)}),e.options.amalgamateClasses&&b.fetchResources.amalgamateClasses(a,e.options.amalgamateClasses,e.operate),e.operate(),e},b.fetchResources.amalgamateClasses=function(a,c,d){b.each(c,function(c){var f=e[c];b.each(f,function(b,e){a[c+"!"+e]=b,b.recurseFirer.addListener(d)})})},b.fetchResources.timeSuccessCallback=function(a){if(a.timeSuccess&&a.options&&a.options.success){var c=a.options.success;a.options.success=function(){var d=new Date,e=c.apply(null,arguments);return b.log("External callback for URL "+a.href+" completed - callback time: "+((new Date).getTime()-d.getTime())+"ms"),e}}},b.fetchResources.clearResourceCache=function(a){a?delete d[c(a)]:b.clear(d)},b.fetchResources.handleCachedRequest=function(a,f){var g=c(a.href),h=d[g];if(h.$$firer$$){b.log("Handling request for "+g+" from cache");var i=a.fetchClass;i&&e[i]&&(b.log("Clearing pendingClass entry for class "+i),delete e[i][g]),d[g]=f,h.fire(f)}},b.fetchResources.completeRequest=function(a){a.queued=!1,a.completeTime=new Date,b.log("Request to URL "+a.href+" completed - total elapsed time: "+(a.completeTime.getTime()-a.initTime.getTime())+"ms"),a.recurseFirer.fire()},b.fetchResources.makeResourceCallback=function(a){return{success:function(c){a.resourceText=c,a.resourceKey=a.href,a.forceCache&&b.fetchResources.handleCachedRequest(a,c),b.fetchResources.completeRequest(a)},error:function(c,d,e){a.fetchError={status:c.status,textStatus:c.textStatus,errorThrown:e},b.fetchResources.completeRequest(a)}}},b.fetchResources.issueCachedRequest=function(f,g){var h=c(f.href),i=d[h];if(i)i.$$firer$$?(b.log("Request for cached resource which is in flight: url "+h),i.addListener(function(a){g.success(a)})):g.success(i);else{b.log("First request for cached resource with url "+h),i=b.makeEventFirer({name:"cache notifier for resource URL "+h}),i.$$firer$$=!0,d[h]=i;var j=f.fetchClass;j&&(e[j]||(e[j]={}),e[j][h]=f),g.cache=!1,a.ajax(g)}},b.fetchResources.composeCallbacks=function(a,c){return c?a?function(){try{c.apply(null,arguments)}catch(d){b.log("Exception applying external fetchResources callback: "+d)}a.apply(null,arguments)}:c:a},b.fetchResources.composePolicy=function(a,c){return b.fetchResources.composeCallbacks(a,c)},b.defaults("fluid.fetchResources.issueRequest",{mergePolicy:{success:b.fetchResources.composePolicy,error:b.fetchResources.composePolicy,url:"reverse"}}),b.fetchResources.issueRequest=function(c,d){var e=b.fetchResources.makeResourceCallback(c),f={url:c.href,success:e.success,error:e.error,dataType:c.dataType||"text"};b.fetchResources.timeSuccessCallback(c),f=b.merge(b.defaults("fluid.fetchResources.issueRequest").mergePolicy,f,c.options),c.queued=!0,c.initTime=new Date,b.log("Request with key "+d+" queued for "+c.href),c.forceCache?b.fetchResources.issueCachedRequest(c,f):a.ajax(f)},b.fetchResources.fetchResourcesImpl=function(c){var d=!0,e=!0,f=c.resourceSpecs;for(var g in f){var h=f[g];if((!h.options||h.options.async)&&(e=!1),h.href&&!h.completeTime)h.queued||b.fetchResources.issueRequest(h,g),h.queued&&(d=!1);else if(h.nodeId&&!h.resourceText){var i=document.getElementById(h.nodeId);h.resourceText=b.dom.getElementText(i),h.resourceKey=h.nodeId}}d&&c.callback&&!c.callbackCalled&&(c.callbackCalled=!0,a.browser.mozilla&&!e?setTimeout(function(){c.callback(f)},1):c.callback(f))},b.fetchResources.primeCacheFromResources=function(a){var c=b.defaults(a).resources,d=(b.expandOptions?b.expandOptions:b.identity)(b.copy(c));b.fetchResources(d)},b.registerNamespace("fluid.expander"),b.expander.makeDefaultFetchOptions=function(c,d,e){return a.extend(!0,{dataType:"text"},e,{success:function(a,b){var d=JSON.parse(a);b(c(d))},error:function(a,c){b.log("Error fetching "+d+": "+c)}})},b.expander.makeFetchExpander=function(a){return{expander:{type:"fluid.expander.deferredFetcher",href:a.url,options:b.expander.makeDefaultFetchOptions(a.disposer,a.url,a.options),resourceSpecCollector:"{resourceSpecCollector}",fetchKey:a.fetchKey}}},b.expander.deferredFetcher=function(a,c,d){var e=c.expander,f=b.copy(e),g=b.expand(e.resourceSpecCollector,d);delete f.type,delete f.resourceSpecCollector,delete f.fetchKey;var h=function(b){a(b)};f.options.success=function(a){e.options.success(a,h)};var i=e.fetchKey||b.allocateGuid();return g[i]=f,b.NO_VALUE}}(b,c),function(){var a="undefined"!=typeof window?window:"undefined"!=typeof self?self:global;!function(){if(!a.DSP){var b={};b.add=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]+c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]+c},b.sub=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]-c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]-c},b.mul=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]*c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]*c},b.mulCplx=function(a,b,c,d,e,f){var g,h,i,j,k;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],a[g]=h*j-i*k,b[g]=h*k+i*j;else for(g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=h*e-i*f,b[g]=h*f+i*e},b.div=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=b[d]/c[d];else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=b[d]/c},b.divCplx=function(a,b,c,d,e,f){var g,h,i,j,k,l;if(e instanceof Float32Array)for(g=Math.min(a.length,b.length,c.length,d.length,e.length,f.length)-1;g>=0;--g)h=c[g],i=d[g],j=e[g],k=f[g],l=1/(j*j+k*k),a[g]=(h*j+i*k)*l,b[g]=(i*j-h*k)*l;else for(l=1/(e*e+f*f),g=Math.min(a.length,b.length,c.length,d.length)-1;g>=0;--g)h=c[g],i=d[g],a[g]=(h*e+i*f)*l,b[g]=(i*e-h*f)*l},b.madd=function(a,b,c,d){var e;if(d instanceof Float32Array)for(e=Math.min(a.length,b.length,c.length,d.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d[e];else for(e=Math.min(a.length,b.length)-1;e>=0;--e)a[e]=b[e]+c[e]*d},b.abs=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.abs(b[c])},b.absCplx=function(a,b,c){for(var d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.sqrt(b[d]*b[d]+c[d]*c[d])},b.acos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.acos(b[c])},b.asin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.asin(b[c])},b.atan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.atan(b[c])},b.atan2=function(a,b,c){for(var d=Math.min(a.length,c.length,b.length)-1;d>=0;--d)a[d]=Math.atan2(b[d],c[d])},b.ceil=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.ceil(b[c])},b.cos=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.cos(b[c])},b.exp=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.exp(b[c])},b.floor=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.floor(b[c])},b.log=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.log(b[c])},b.max=function(a){for(var b=-(1/0),c=a.length-1;c>=0;--c){var d=a[c];d>b&&(b=d)}return b},b.min=function(a){for(var b=1/0,c=a.length-1;c>=0;--c){var d=a[c];b>d&&(b=d)}return b},b.pow=function(a,b,c){var d;if(c instanceof Float32Array)for(d=Math.min(a.length,b.length,c.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c[d]);else if(2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e}else if(3==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];a[d]=e*e*e}else if(4==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=b[d];e*=e,a[d]=e*e}else if(-1==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=1/b[d];else if(-2==c)for(d=Math.min(a.length,b.length)-1;d>=0;--d){var e=1/b[d];a[d]=e*e}else for(d=Math.min(a.length,b.length)-1;d>=0;--d)a[d]=Math.pow(b[d],c)},b.random=function(a,b,c){b||(b=0),isNaN(parseFloat(c))&&(c=1);for(var d=c-b,e=a.length-1;e>=0;--e)a[e]=Math.random()*d+b},b.round=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.round(b[c])},b.sin=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sin(b[c])},b.sqrt=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.sqrt(b[c])},b.tan=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=Math.tan(b[c])},b.clamp=function(a,b,c,d){for(var e=Math.min(a.length,b.length)-1;e>=0;--e){var f=b[e];a[e]=c>f?c:f>d?d:f}},b.fract=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c){var d=b[c];a[c]=d-Math.floor(d)}},b.ramp=function(a,b,c){var d=a.length-1;if(d>=0&&(a[0]=b),d>0)for(var e=(c-b)/d,f=1;d>=f;++f)a[f]=b+e*f},b.sign=function(a,b){for(var c=Math.min(a.length,b.length)-1;c>=0;--c)a[c]=b[c]<0?-1:1},b.sum=function(a){for(var b=0,c=a.length-1;c>=0;--c)b+=a[c];return b},b.sampleLinear=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:0];a[g]=k+j*(l-k)}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=b[i],l=b[f>i?i+1:f];a[g]=k+j*(l-k)}},b.sampleCubic=function(a,b,c,d){var e=b.length,f=e-1;if(d)for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h-=Math.floor(h/e)*e;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:f],r=b[i],s=b[f>i?i+1:0],t=b[f-1>i?i+2:i+2-Math.floor((i+2)/e)*e];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}else for(var g=Math.min(a.length,c.length)-1;g>=0;--g){var h=c[g];h=0>h?0:h>f?f:h;var i=Math.floor(h),j=h-i,k=j*j,l=k*j,m=-2*l+3*k,n=1-m,o=l-k,p=o-k+j,q=b[i>0?i-1:0],r=b[i],s=b[f>i?i+1:f],t=b[f-1>i?i+2:f];a[g]=n*r+m*s+.5*(p*(s-q)+o*(t-r))}},b.pack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],a[b+3]=g[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],a[b+2]=f[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],a[b+1]=e[j],b+=c;else for(var j=0;i>j;++j)a[b]=d[j],b+=c},b.unpack=function(a,b,c,d,e,f,g){var h=Math.floor((a.length-b)/c),i=Math.min(h,d.length);if(e)if(f)if(g)for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],g[j]=a[b+3],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],f[j]=a[b+2],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],e[j]=a[b+1],b+=c;else for(var j=0;i>j;++j)d[j]=a[b],b+=c},a.DSP=b}}(),function(){if(!a.Filter){var b=function(a,b){(isNaN(parseFloat(a))||!isFinite(a))&&(a=1),b||(b=0),this.b=new Float32Array(a),this.b[0]=1,this.a=new Float32Array(b),this._bHist=new Float32Array(a),this._aHist=new Float32Array(b)};b.prototype.filter=function(a,b){var c,d=this.a,e=d.length,f=this.b,g=f.length,h=this._aHist,i=this._bHist,j=b.length,k=a.length,l=g-1,m=e;for(c=0;(l||m)&&j>c;++c){var n,o;o=g-l,l&&l--;var p=f[0]*b[c];for(n=1;o>n;++n)p+=f[n]*b[c-n];for(;g>n;++n)p+=f[n]*i[n-o];for(o=e-m,m&&m--,n=0;o>n;++n)p-=d[n]*a[c-1-n];for(;e>n;++n)p-=d[n]*h[n-o];a[c]=p}if(3==g&&2==e)for(var q,r,s=f[0],t=f[1],u=f[2],v=d[0],w=d[1],x=b[c-1],y=b[c-2],z=a[c-1],A=a[c-2];j>c;++c)q=y,y=x,x=b[c],r=A,A=z,z=s*x+t*y+u*q-v*A-w*r,a[c]=z;else for(;j>c;++c){var n,p=f[0]*b[c];for(n=1;g>n;++n)p+=f[n]*b[c-n];for(n=0;e>n;++n)p-=d[n]*a[c-1-n];a[c]=p}var B=Math.min(g-1,j);for(c=g-2;c>=B;--c)i[c]=i[c-B];for(c=0;B>c;++c)i[c]=b[j-1-c];for(B=Math.min(e,k),c=e-1;c>=B;--c)h[c]=h[c-B];for(c=0;B>c;++c)h[c]=a[j-1-c]},b.prototype.clearHistory=function(){for(var a=this._bHist.length-1;a>=0;--a)this._bHist[a]=0;for(var a=this._aHist.length-1;a>=0;--a)this._aHist[a]=0},a.Filter=b}}(),function(){if(!a.FFT){var b=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p=0,q=c,r=c+g,s=q+g;s>q;)j=.5*a[q],k=.5*b[q],l=.5*a[r],m=.5*b[r],n=e[p],o=f[p],h=l*n-m*o,i=l*o+m*n,a[r]=j-h,b[r]=k-i,a[q]=j+h,b[q]=k+i,p+=d,++q,++r},c=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x=0,y=0,z=2*d,A=c,B=c+g,C=c+2*g,D=f[d*g],E=1/3,F=A+g;F>A;)p=a[A]*E,q=b[A]*E,r=a[B]*E,s=b[B]*E,t=a[C]*E,u=b[C]*E,v=e[x],w=f[x],j=r*v-s*w,k=r*w+s*v,v=e[y],w=f[y],l=t*v-u*w,m=t*w+u*v,n=j+l,o=k+m,h=j-l,i=k-m,r=p-.5*n,s=q-.5*o,h*=D,i*=D,a[A]=p+n,b[A]=q+o,a[C]=r+i,b[C]=s-h,a[B]=r-i,b[B]=s+h,x+=d,y+=z,++A,++B,++C},d=function(a,b,c,d,e,f,g,h){for(var i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E=0,F=0,G=0,H=2*d,I=3*d,J=c,K=c+g,L=c+2*g,M=c+3*g,N=.25,O=J+g;O>J;)u=a[J]*N,v=b[J]*N,w=a[K]*N,x=b[K]*N,y=a[L]*N,z=b[L]*N,A=a[M]*N,B=b[M]*N,C=e[E],D=f[E],i=w*C-x*D,j=w*D+x*C,C=e[F],D=f[F],k=y*C-z*D,l=y*D+z*C,C=e[G],D=f[G],m=A*C-B*D,n=A*D+B*C,s=u-k,t=v-l,u+=k,v+=l,o=i+m,p=j+n,q=i-m,r=j-n,a[L]=u-o,b[L]=v-p,a[J]=u+o,b[J]=v+p,h?(a[K]=s-r,b[K]=t+q,a[M]=s+r,b[M]=t-q):(a[K]=s+r,b[K]=t-q,a[M]=s-r,b[M]=t+q),E+=d,F+=H,G+=I,++J,++K,++L,++M},e=function(a,b,c,d,e,f,g){for(var h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=0,U=0,V=0,W=0,X=2*d,Y=3*d,Z=4*d,$=c,_=c+g,aa=c+2*g,ba=c+3*g,ca=c+4*g,da=e[d*g],ea=f[d*g],fa=e[2*d*g],ga=f[2*d*g],ha=.2,ia=$+g;ia>$;)H=a[$]*ha,I=b[$]*ha,J=a[_]*ha,K=b[_]*ha,L=a[aa]*ha,M=b[aa]*ha,N=a[ba]*ha,O=b[ba]*ha,P=a[ca]*ha,Q=b[ca]*ha,h=H,i=I,R=e[T],S=f[T],j=J*R-K*S,k=J*S+K*R,R=e[U],S=f[U],l=L*R-M*S,m=L*S+M*R,R=e[V],S=f[V],n=N*R-O*S,o=N*S+O*R,R=e[W],S=f[W],p=P*R-Q*S,q=P*S+Q*R,v=j+p,w=k+q,B=j-p,C=k-q,x=l+n,y=m+o,z=l-n,A=m-o,a[$]=H+v+x,b[$]=I+w+y,r=h+v*da+x*fa,s=i+w*da+y*fa,t=C*ea+A*ga,u=-B*ea-z*ga,a[_]=r-t,b[_]=s-u,a[ca]=r+t,b[ca]=s+u,D=h+v*fa+x*da,E=i+w*fa+y*da,F=-C*ga+A*ea,G=B*ga-z*ea,a[aa]=D+F,b[aa]=E+G,a[ba]=D-F,b[ba]=E-G,T+=d,U+=X,V+=Y,W+=Z,++$,++_,++aa,++ba,++ca},f=function(a,b,c,d,e,f,g,h,i){var j,k,l,m,n,o,p,q,r,s,t=new Float32Array(h),u=new Float32Array(h),v=1/h;for(j=0;g>j;++j){for(m=c+j,k=0;h>k;++k)t[k]=a[m]*v,u[k]=b[m]*v,m+=g;m=c+j;var w=d*j;for(k=0;h>k;++k){n=t[0],o=u[0];var x=0;for(l=1;h>l;++l)x+=w,x>=i&&(x-=i),p=t[l],q=u[l],r=e[x],s=f[x],n+=p*r-q*s,o+=p*s+q*r;a[m]=n,b[m]=o,m+=g,w+=d}}},g=function(a,h,i,j,k,l,m,n,o,p,q,r,s,t){var u=o[p++],v=o[p++],w=i,x=i+u*v,y=m*n;if(1==v){do a[i]=j[l],h[i]=k[l],l+=y,++i;while(i!=x)}else do g(a,h,i,j,k,l,m*u,n,o,p,q,r,s,t),l+=y,i+=v;while(i!=x);switch(i=w,u){case 2:b(a,h,i,m,q,r,v);break;case 3:c(a,h,i,m,q,r,v);break;case 4:d(a,h,i,m,q,r,v,t);break;case 5:e(a,h,i,m,q,r,v);break;default:f(a,h,i,m,q,r,v,u,s)}},h=function(a,b){var c=4,d=Math.floor(Math.sqrt(a)),e=0;do{for(;a%c;){switch(c){case 4:c=2;break;case 2:c=3;break;default:c+=2}c>d&&(c=a)}a=Math.floor(a/c),b[e++]=c,b[e++]=a}while(a>1)},i=function(a){a||(a=256),this.size=a,this._twiddlesFwdRe=new Float32Array(a),this._twiddlesFwdIm=new Float32Array(a),this._twiddlesInvRe=this._twiddlesFwdRe,this._twiddlesInvIm=new Float32Array(a);for(var b=0;a>b;++b){var c=-2*Math.PI*b/a,d=Math.cos(c),e=Math.sin(c);this._twiddlesFwdRe[b]=d,this._twiddlesFwdIm[b]=e,this._twiddlesInvIm[b]=-e}this._factors=new Int32Array(64),h(a,this._factors)};i.prototype.forwardCplx=function(a,b,c,d){var e=this._twiddlesFwdRe,f=this._twiddlesFwdIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!1)},i.prototype.forward=function(a,b,c){this.forwardCplx(a,b,c,new Float32Array(this.size))},i.prototype.inverseCplx=function(a,b,c,d){var e=this._twiddlesInvRe,f=this._twiddlesInvIm;g(a,b,0,c,d,0,1,1,this._factors,0,e,f,this.size,!0)},i.prototype.inverse=function(a,b,c){this.inverseCplx(a,new Float32Array(this.size),b,c)},a.FFT=i}}()}();var e=function(a){if(a=void 0===a?(new Date).getTime():a,"number"!=typeof a||Math.ceil(a)!=Math.floor(a))throw new TypeError("seed value must be an integer");this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,this.init_by_array([a],1)};e.prototype.init_genrand=function(a){for(this.mt[0]=a>>>0,this.mti=1;this.mti<this.N;this.mti++){var a=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(1812433253*((4294901760&a)>>>16)<<16)+1812433253*(65535&a)+this.mti,this.mt[this.mti]>>>=0}},e.prototype.init_by_array=function(a,b){var c,d,e;for(this.init_genrand(19650218),c=1,d=0,e=this.N>b?this.N:b;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1664525*((4294901760&f)>>>16)<<16)+1664525*(65535&f))+a[d]+d,this.mt[c]>>>=0,c++,d++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1),d>=b&&(d=0)}for(e=this.N-1;e;e--){var f=this.mt[c-1]^this.mt[c-1]>>>30;this.mt[c]=(this.mt[c]^(1566083941*((4294901760&f)>>>16)<<16)+1566083941*(65535&f))-c,this.mt[c]>>>=0,c++,c>=this.N&&(this.mt[0]=this.mt[this.N-1],c=1)}this.mt[0]=2147483648},e.prototype.genrand_int32=function(){var a,b=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var c;for(this.mti==this.N+1&&this.init_genrand(5489),c=0;c<this.N-this.M;c++)a=this.mt[c]&this.UPPER_MASK|this.mt[c+1]&this.LOWER_MASK,this.mt[c]=this.mt[c+this.M]^a>>>1^b[1&a];for(;c<this.N-1;c++)a=this.mt[c]&this.UPPER_MASK|this.mt[c+1]&this.LOWER_MASK,this.mt[c]=this.mt[c+(this.M-this.N)]^a>>>1^b[1&a];a=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^a>>>1^b[1&a],this.mti=0}return a=this.mt[this.mti++],a^=a>>>11,a^=a<<7&2636928640,a^=a<<15&4022730752,a^=a>>>18,a>>>0},e.prototype.genrand_int31=function(){return this.genrand_int32()>>>1},e.prototype.genrand_real1=function(){return this.genrand_int32()*(1/4294967295)},e.prototype.random=function(){return this.pythonCompatibility&&(this.skip&&this.genrand_int32(),this.skip=!0),this.genrand_int32()*(1/4294967296)},e.prototype.genrand_real3=function(){return(this.genrand_int32()+.5)*(1/4294967296)},e.prototype.genrand_res53=function(){var a=this.genrand_int32()>>>5,b=this.genrand_int32()>>>6;return(67108864*a+b)*(1/9007199254740992)},e.prototype.LOG4=Math.log(4),e.prototype.SG_MAGICCONST=1+Math.log(4.5),e.prototype.exponential=function(a){if(1!=arguments.length)throw new SyntaxError("exponential() must be called with 'lambda' parameter");var b=this.random();return-Math.log(b)/a},e.prototype.gamma=function(a,b){if(2!=arguments.length)throw new SyntaxError("gamma() must be called with alpha and beta parameters");if(!(a>1)){if(1==a){for(var c=this.random();1e-7>=c;)c=this.random();return-Math.log(c)*b}for(;;){var c=this.random(),d=(Math.E+a)/Math.E,e=d*c;if(1>=e)var f=Math.pow(e,1/a);else var f=-Math.log((d-e)/a);var g=this.random();if(e>1){if(g<=Math.pow(f,a-1))break}else if(g<=Math.exp(-f))break}return f*b}for(var h=Math.sqrt(2*a-1),i=a-this.LOG4,j=a+h;;){var g=this.random();if(!(1e-7>g||c>.9999999)){var k=1-this.random(),l=Math.log(g/(1-g))/h,f=a*Math.exp(l),m=g*g*k,n=i+j*l-f;if(n+this.SG_MAGICCONST-4.5*m>=0||n>=Math.log(m))return f*b}}},e.prototype.normal=function(a,b){if(2!=arguments.length)throw new SyntaxError("normal() must be called with mu and sigma parameters");var c=this.lastNormal;if(this.lastNormal=0/0,!c){var d=2*this.random()*Math.PI,e=Math.sqrt(-2*Math.log(1-this.random()));c=Math.cos(d)*e,this.lastNormal=Math.sin(d)*e}return a+c*b},e.prototype.pareto=function(a){if(1!=arguments.length)throw new SyntaxError("pareto() must be called with alpha parameter");var b=this.random();return 1/Math.pow(1-b,1/a)},e.prototype.triangular=function(a,b,c){if(3!=arguments.length)throw new SyntaxError("triangular() must be called with lower, upper and mode parameters");var d=(c-a)/(b-a),e=this.random();return d>=e?a+Math.sqrt(e*(b-a)*(c-a)):b-Math.sqrt((1-e)*(b-a)*(b-c))},e.prototype.uniform=function(a,b){if(2!=arguments.length)throw new SyntaxError("uniform() must be called with lower and upper parameters");return a+this.random()*(b-a)},e.prototype.weibull=function(a,b){if(2!=arguments.length)throw new SyntaxError("weibull() must be called with alpha and beta parameters");var c=1-this.random();return a*Math.pow(-Math.log(c),1/b)};var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.fluid=d,f.init=function(a){var b=a?{audioSettings:a}:void 0,c=f.enviro.shared=f.enviro(b);return c},f.OUT_UGEN_ID="flocking-out",f.MAX_CHANNELS=32,f.MIN_BUSES=2,f.MAX_INPUT_BUSES=32,f.MIN_INPUT_BUSES=1,f.ALL_CHANNELS=f.MAX_INPUT_BUSES,f.PI=Math.PI,f.TWOPI=2*Math.PI,f.HALFPI=Math.PI/2,f.LOG01=Math.log(.1),f.LOG001=Math.log(.001),f.ROOT2=Math.sqrt(2),f.rates={AUDIO:"audio",CONTROL:"control",SCHEDULED:"scheduled",DEMAND:"demand",CONSTANT:"constant"},f.sampleFormats={FLOAT32NE:"float32NE"},d.registerNamespace("flock.debug"),f.debug.failHard=!0,f.browser=function(){if("undefined"==typeof navigator)return{};var a,b,c=navigator.userAgent.toLowerCase(),d={};return a=/(chrome)[ \/]([\w.]+)/.exec(c)||/(webkit)[ \/]([\w.]+)/.exec(c)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(c)||/(msie) ([\w.]+)/.exec(c)||c.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(c)||[],b={browser:a[1]||"",version:a[2]||"0"},b.browser&&(d[b.browser]=!0,d.version=b.version),d.chrome?d.webkit=!0:d.webkit&&(d.safari=!0),d},d.registerNamespace("flock.platform"),f.platform.isBrowser="undefined"!=typeof window,f.platform.hasRequire="undefined"!=typeof require,f.platform.os=f.platform.isBrowser?window.navigator.platform:d.require("os").platform(),f.platform.isLinux=f.platform.os.indexOf("Linux")>-1,f.platform.isAndroid=f.platform.isLinux&&f.platform.os.indexOf("arm")>-1,f.platform.isIOS="iPhone"===f.platform.os||"iPad"===f.platform.os||"iPod"===f.platform.os,f.platform.isMobile=f.platform.isAndroid||f.platform.isIOS,f.platform.browser=f.browser(),f.platform.isWebAudio="undefined"!=typeof AudioContext||"undefined"!=typeof webkitAudioContext,f.platform.audioEngine=f.platform.isBrowser?f.platform.isWebAudio?"webAudio":"moz":"nodejs",d.staticEnvironment.audioEngine=d.typeTag("flock.platform."+f.platform.audioEngine),f.defaultBufferSizeForPlatform=function(){return f.platform.isMobile?8192:1024},f.shim={URL:f.platform.isBrowser?window.URL||window.webkitURL||window.msURL:void 0},f.requireModule=function(a,b){return b||(b=a),f.platform.isBrowser?window[a]:f.platform.hasRequire?require(b)[a]:void 0},f.noOp=function(){},f.isIterable=function(a){var b=typeof a;return a&&void 0!==a.length&&"string"!==b&&"function"!==b},f.hasTag=function(a,b){return a&&b?a.tags&&a.tags.indexOf(b)>-1:!1},f.generate=function(a,b){var c,d="number"==typeof a?new Float32Array(a):a,e="function"==typeof b;for(c=0;c<d.length;c++)d[c]=e?b(c,d):b;return d},f.generate.silence=function(a){if("number"==typeof a)return new Float32Array(a);var b,c=a;for(b=0;b<c.length;b++)c[b]=0;return c},f.reverse=function(a){if(!a||!f.isIterable(a)||a.length<2)return a;if("function"==typeof a.reverse)return a.reverse();for(var b,c=0,d=a.length-1;d>c;c++,d--)b=a[c],a[c]=a[d],a[d]=b;return a},f.randomIndex=function(a){var b=a.length-1;return Math.round(Math.random()*b)},f.arrayChoose=function(a,b){b=b||f.randomIndex,a=d.makeArray(a);var c=b(a);return a[c]},f.choose=function(a,b){var c,d;return f.isIterable(a)?d=f.arrayChoose(a,b):(c=f.arrayChoose(a.keys,b),d=a[c])},f.normalize=function(a,b,c){c=c||a;var d,e,f,g=0;for(b=void 0===b?1:b,d=0;d<a.length;d++)e=Math.abs(a[d]),e>g&&(g=e);if(g>0)for(d=0;d<a.length;d++)f=a[d],c[d]=f/g*b;return c},f.generateFourierTable=function(a,b,c,d,e){return d*=f.TWOPI,f.generate(a,function(a){var f,g,h,i=0;for(f=0;c>f;f++)g=e?e[f]:1,h=(f+1)*a*b,i+=g*Math.cos(h+d);return i})},f.generateNormalizedFourierTable=function(a,b,c,d,e){var g=f.generate(c,function(a){return e(a+1)}),h=f.generateFourierTable(a,b,c,d,g);return f.normalize(h)},f.fillTable=function(a,b){var c="number"==typeof a?a:a.length;return b(a,f.TWOPI/c)},f.tableGenerators={sin:function(a,b){return f.generate(a,function(a){return Math.sin(a*b)})},tri:function(a,b){return f.generateNormalizedFourierTable(a,b,1e3,1,function(a){return a%2===0?0:1/(a*a)})},saw:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return 1/a})},square:function(a,b){return f.generateNormalizedFourierTable(a,b,10,-.25,function(a){return a%2===0?0:1/a})},hann:function(a){return f.generate(a,function(b){var c=Math.sin(Math.PI*b/a);return c*c})},sinWindow:function(a){return f.generate(a,function(b){return Math.sin(Math.PI*b/a)})}},f.range=function(a){var b,c,d={max:Number.NEGATIVE_INFINITY,min:1/0};for(b=0;b<a.length;b++)c=a[b],c>d.max&&(d.max=c),c<d.min&&(d.min=c);return d},f.scale=function(a){if(a){var b,c=f.range(a),d=(c.max-c.min)/2,e=(c.max+c.min)/2;for(b=0;b<a.length;b++)a[b]=(a[b]-e)/d;return a}},f.copyBuffer=function(a,b,c){void 0===c&&(c=a.length);var d,e,f=c-b,g=new Float32Array(f);for(d=b,e=0;c>d;d++,e++)g[e]=a[d];return g},f.parseMidiString=function(a){if(!a||a.length<2)return 0/0;a=a.toLowerCase();var b=a.charAt(1),c="#"===b||"b"===b?2:1,d=a.substring(0,c),e=Number(a.substring(c)),g=f.midiFreq.noteNames[d],h=12*e+g;return h},f.midiFreq=function(a,b,c,d){return b=void 0===b?440:b,c=void 0===c?69:c,d=d||12,"string"==typeof a&&(a=f.parseMidiString(a)),b*Math.pow(2,1*(a-c)/d)},f.midiFreq.noteNames={"b#":0,c:0,"c#":1,db:1,d:2,"d#":3,eb:3,e:4,"e#":5,f:5,"f#":6,gb:6,g:7,"g#":8,ab:8,a:9,"a#":10,bb:10,b:11,cb:11},f.interpolate={none:function(a,b){return a%=b.length,b[0|a]},linear:function(a,b){var c=b.length;a%=c;var d=0|a,e=(d+1)%c,f=a-d,g=b[d],h=b[e];return g+f*(h-g)},hermite:function(a,b){var c=b.length,d=Math.floor(a),e=d%c,f=a-d,g=e>0?e-1:c-1,h=(e+1)%c,i=(e+2)%c,j=b[g],k=b[e],l=b[h],m=b[i],n=.5*(l-j),o=k-l,p=n+o,q=p+o+.5*(m-k),r=p+q,s=((q*f-r)*f+n)*f+k;return s}},f.interpolate.cubic=f.interpolate.hermite,f.log={warn:function(a){d.log(d.logLevel.WARN,a)},debug:function(a){d.log(d.logLevel.INFO,a)}},f.fail=function(a){if(f.debug.failHard)throw new Error(a);d.log(d.logLevel.FAIL,a)},f.pathParseError=function(a,b,c){var e="Error parsing path '"+b+"'. Segment '"+c+"' could not be resolved. Root object was: "+d.prettyPrintJSON(a);f.fail(e)},f.get=function(a,b){if(!a)return d.getGlobalValue(b);if(1===arguments.length&&"string"==typeof a)return d.getGlobalValue(a);if(b&&""!==b){var c,e=""===b?[]:String(b).split("."),g=a[e[0]];for(c=1;c<e.length;c++){if(null===g||void 0===g)return void f.pathParseError(a,b,e[c-1]);g=g[e[c]]}return g}},f.set=function(a,b,c){if(a&&b&&""!==b){var d,e,g=String(b).split("."),h=g.length,i=g[0];for(d=1;h>d;d++){if(a=a[i],e=typeof a,"object"!==e)return void f.fail("Error while setting a value at path '"+b+"'. A non-container object was found at segment '"+i+"'. Value: "+a);i=g[d],void 0===a[i]&&(a[i]={})}return a[i]=c,c}},f.invoke=function(a,b,c){var d="function"==typeof a?a:f.get(a,b);return"function"!=typeof d?void f.fail("Path '"+b+"' does not resolve to a function."):d.apply(null,c)},f.input={},f.input.shouldExpand=function(a){return f.parse.specialInputs.indexOf(a)<0},f.input.pathExpander=function(a){var b,c=d.model.parseEL(a),e="inputs",f=c.length,g=f-1,h=[];for(b=0;g>b;b++){var i=c[b],j=c[b+1];if(h.push(i),"model"===j||"options"===j){h=h.concat(c.slice(b+1,g));break}isNaN(Number(j))&&h.push(e)}return h.push(c[g]),h.join(".")},f.input.expandPaths=function(a){var b,c,d,e={};for(b in a)c=f.input.pathExpander(b),d=a[b],e[c]=d;return e},f.input.expandPath=function(a){return"string"==typeof a?f.input.pathExpander(a):f.input.expandPaths(a)},f.input.getValueForPath=function(a,b){b=f.input.expandPath(b);var c=f.get(a,b);return f.hasTag(c,"flock.ugen.valueType")?c.inputs.value:c},f.input.getValuesForPathArray=function(a,b){var c,d,e={};for(c=0;c<b.length;c++)d=b[c],e[d]=f.input.get(a,d);return e},f.input.getValuesForPathObject=function(a,b){var c;for(c in b)b[c]=f.input.get(a,c);return b},f.input.get=function(a,b){return"string"==typeof b?f.input.getValueForPath(a,b):f.isIterable(b)?f.input.getValuesForPathArray(a,b):f.input.getValuesForPathObject(a,b)},f.input.resolveValue=function(a,b,c,e,g,h,i){if("string"==typeof c){var j=d.extractEL(c,f.input.valueExpressionSpec);if(j){var k=f.input.getValueForPath(a,j);return void 0===k&&f.log.debug("The value expression '"+c+"' resolved to undefined. If this isn't expected, check to ensure that your path is valid."),k}}return f.input.shouldExpand(g)&&i?i(c,b,e,h):c},f.input.valueExpressionSpec={ELstyle:"${}"},f.input.setValueForPath=function(a,b,c,d,e){b=f.input.expandPath(b);var g=f.get(a,b),h=b.lastIndexOf("."),i=b.slice(h+1),j=h>-1?f.get(a,b.slice(0,b.lastIndexOf(".inputs"))):d,k=f.input.resolveValue(a,b,c,j,i,g,e);return f.set(a,b,k),j&&j.onInputChanged&&j.onInputChanged(i),k},f.input.setValuesForPaths=function(a,b,c,d){var e,g,h,i={};for(e in b)g=b[e],h=f.input.set(a,e,g,c,d),i[e]=h;return i},f.input.set=function(a,b,c,d,e){return"string"==typeof b?f.input.setValueForPath(a,b,c,d,e):f.input.setValuesForPaths(a,b,d,e)},d.defaults("flock.nodeList",{gradeNames:["fluid.littleComponent","autoInit"],members:{nodes:[],namedNodes:{}}}),f.nodeList.preInit=function(a){a.head=function(b){return a.nodes.unshift(b),b.nickName&&(a.namedNodes[b.nickName]=b),0},a.before=function(b,c){var d=a.nodes.indexOf(b);return a.insert(d,c),d},a.after=function(b,c){var d=a.nodes.indexOf(b),e=d+1;return a.insert(e,c),e},a.insert=function(b,c){return 0>b?a.head(c):(a.nodes.splice(b,0,c),c.nickName&&(a.namedNodes[c.nickName]=c),
b)},a.tail=function(b){return a.nodes.push(b),b.nickName&&(a.namedNodes[b.nickName]=b),a.nodes.length},a.remove=function(b){var c=a.nodes.indexOf(b);return 0>c?c:(a.nodes.splice(c,1),delete a.namedNodes[b.nickName],c)},a.replace=function(b,c){var d=a.nodes.indexOf(c);return 0>d?a.head(b):(a.nodes[d]=b,delete a.namedNodes[c.nickName],b.nickName&&(a.namedNodes[b.nickName]=b),d)},a.clearAll=function(){for(;a.nodes.length>0;)a.nodes.pop()}},d.defaults("flock.enviro",{gradeNames:["fluid.standardRelayComponent","flock.nodeList","autoInit"],members:{audioSettings:"@expand:flock.enviro.clampAudioSettings({that}.options.audioSettings)",buses:{expander:{funcName:"flock.enviro.createAudioBuffers",args:["{that}.audioSettings.numBuses","{that}.audioSettings.blockSize"]}},buffers:{},bufferSources:{}},model:{isPlaying:!1,nextAvailableBus:{input:0,interconnect:0}},audioSettings:{rates:{audio:48e3,control:void 0,scheduled:void 0,demand:0,constant:0},blockSize:64,chans:2,numInputBuses:2,numBuses:8,bufferSize:f.defaultBufferSizeForPlatform()},components:{asyncScheduler:{type:"flock.scheduler.async"},audioStrategy:{type:"flock.audioStrategy.platform",options:{audioSettings:"{enviro}.audioSettings"}}},invokers:{acquireNextBus:{funcName:"flock.enviro.acquireNextBus",args:["{arguments}.0","{that}.buses","{that}.applier","{that}.model","{that}.audioSettings"]}},listeners:{onCreate:{funcName:"flock.enviro.calculateControlRate",args:["{that}.audioSettings"]}}}),f.enviro.clampAudioSettings=function(a){return a.numInputBuses=Math.min(a.numInputBuses,f.MAX_INPUT_BUSES),a.numInputBuses=Math.max(a.numInputBuses,f.MIN_INPUT_BUSES),a.chans=Math.min(a.chans,f.MAX_CHANNELS),a.numBuses=Math.max(a.numBuses,a.chans),a.numBuses=Math.max(a.numBuses,f.MIN_BUSES),a},f.enviro.calculateControlRate=function(a){return a.rates.control=a.rates.audio/a.blockSize,a},f.enviro.acquireNextBus=function(a,b,c,d,e){var g=d.nextAvailableBus[a];if(void 0===g)return void f.fail("An invalid bus type was specified when invoking flock.enviro.acquireNextBus(). Type was: "+a);var h=g+e.chans,i=e.chans+e.numInputBuses;return"interconnect"===a&&(h+=e.numInputBuses,i=b.length),h>=i?void f.fail("Unable to aquire a bus. There are insufficient buses available. Please use an existing bus or configure additional buses using the enviroment's numBuses and numInputBuses parameters."):(c.change("nextAvailableBus."+a,++g),h)},f.enviro.preInit=function(a){a.start=function(){a.model.isPlaying||(a.audioStrategy.start(),a.model.isPlaying=!0)},a.play=a.start,a.stop=function(){a.model.isPlaying&&(a.audioStrategy.stop(),a.model.isPlaying=!1)},a.reset=function(){a.stop(),a.asyncScheduler.clearAll(),a.applier.change("nextAvailableBus.input",[]),a.applier.change("nextAvailableBus.interconnect",[]),a.audioStrategy.reset(),a.clearAll()},a.registerBuffer=function(b){b.id&&(a.buffers[b.id]=b)},a.releaseBuffer=function(b){if(b){var c="string"==typeof b?b:b.id;delete a.buffers[c]}}},f.enviro.finalInit=function(a){a.gen=function(){var b=a.audioStrategy.nodeEvaluator;b.clearBuses(),b.gen()}},f.enviro.createAudioBuffers=function(a,b){var c,d=[];for(c=0;a>c;c++)d[c]=new Float32Array(b);return d},d.defaults("flock.audioStrategy",{gradeNames:["fluid.standardRelayComponent"],components:{nodeEvaluator:{type:"flock.enviro.nodeEvaluator",options:{numBuses:"{enviro}.options.audioSettings.numBuses",blockSize:"{enviro}.options.audioSettings.blockSize",members:{buses:"{enviro}.buses",nodes:"{enviro}.nodes"}}}}}),d.defaults("flock.enviro.nodeEvaluator",{gradeNames:["fluid.littleComponent","autoInit"]}),f.enviro.nodeEvaluator.finalInit=function(a){a.clearBuses=function(){var b,c,d,e=a.options.numBuses,f=a.options.blockSize;for(b=0;e>b;b++)for(c=a.buses[b],d=0;f>d;d++)c[d]=0},a.gen=function(){var b,c,d=a.nodes;for(b=0;b<d.length;b++)c=d[b],c.gen(c.model.blockSize)}},d.defaults("flock.autoEnviro",{gradeNames:["fluid.littleComponent","autoInit"]}),f.autoEnviro.preInit=function(){f.enviro.shared||f.init()},d.defaults("flock.node",{gradeNames:["flock.autoEnviro","fluid.modelComponent","autoInit"]}),d.defaults("flock.ugenNodeList",{gradeNames:["flock.nodeList","autoInit"]}),f.ugenNodeList.finalInit=function(a){a.insertTree=function(b,c){var d,e,g=c.inputs;for(d in g)e=g[d],f.isUGen(e)&&(b=a.insertTree(b,e),b++);return a.insert(b,c)},a.removeTree=function(b){var c,d,e=b.inputs;for(c in e)d=e[c],"number"!=typeof d&&a.removeTree(d);return a.remove(b)},a.replaceTree=function(b,c){if(!c)return a.insertTree(a.nodes.length,b);var d=a.removeTree(c);return a.insertTree(d,b),d},a.swapTree=function(b,c,d){var e;if(d){for(e in c.inputs)d.indexOf(e)<0?a.removeTree(c.inputs[e]):b.inputs[e]=c.inputs[e];for(e in b.inputs)d.indexOf(e)<0&&a.replaceTree(b.inputs[e],c.inputs[e])}else b.inputs=c.inputs;return a.replace(b,c)}},d.defaults("flock.synth",{gradeNames:["fluid.eventedComponent","fluid.modelComponent","flock.node","flock.ugenNodeList","autoInit"],rate:f.rates.AUDIO,invokers:{play:{funcName:"flock.synth.play",args:["{that}","{that}.enviro"]},pause:{funcName:"flock.synth.pause",args:["{that}","{that}.enviro"]}},listeners:{onDestroy:{func:"{that}.pause"}}}),f.synth.play=function(a,b){-1===b.nodes.indexOf(a)&&b.head(a),b.model.isPlaying||b.play()},f.synth.pause=function(a,b){b.remove(a)},f.synth.finalInit=function(b){return b.rate=b.options.rate,b.enviro=b.enviro||f.enviro.shared,b.audioSettings=a.extend(!0,{},b.enviro.audioSettings,b.options.audioSettings),b.model.blockSize=b.rate===f.rates.AUDIO?b.audioSettings.blockSize:1,b.gen=function(){var a,c,d=b.model,e=b.nodes;for(a=0;a<e.length;a++)c=e[a],void 0!==c.gen&&c.gen(c.model.blockSize),d.value=c.model.value},b.get=function(a){return f.input.get(b.namedNodes,a)},b.set=function(a,c,d){return f.input.set(b.namedNodes,a,c,void 0,function(a,c,e,g){return f.synth.ugenValueParser(b,a,g,d)})},b.input=function(a,c,d){return a?"string"==typeof a?arguments.length<2?b.get(a):b.set(a,c,d):f.isIterable(a)?b.get(a):b.set(a,c,d):void 0},b.init=function(){var a=b.options,c=a.rate===f.rates.SCHEDULED||a.rate===f.rates.DEMAND;a.synthDef||d.log(d.logLevel.IMPORTANT,"Warning: Instantiating a flock.synth instance with an empty synth def."),b.out=f.parse.synthDef(a.synthDef,{rate:a.rate,overrideRate:c,visitors:b.tail,buffers:b.enviro.buffers,buses:b.enviro.buses,audioSettings:b.audioSettings}),a.addToEnvironment!==!1&&b.enviro.tail(b)},b.init(),b},f.synth.ugenValueParser=function(a,b,c,d){if(null===b||void 0===b)return c;var e,g,h,i=f.parse.ugenDef(b,{audioSettings:a.audioSettings,buses:a.enviro.buses,buffers:a.enviro.buffers}),j=f.isIterable(i)?i:void 0!==i?[i]:[],k=f.isIterable(c)?c:void 0!==c?[c]:[],l=Math.min(j.length,k.length),m=d?a.swapTree:a.replaceTree;for(e=0;l>e;e++)g=m(j[e],k[e]);for(h=e;h<j.length;h++)g++,a.insertTree(g,j[h]);for(h=e;h<k.length;h++)a.removeTree(k[h]);return i},f.synth.make=function(a,b){return b=b||{},b.synthDef=a,f.synth(b)},d.defaults("flock.synth.value",{gradeNames:["flock.synth","autoInit"],rate:"demand",addToEnvironment:!1}),f.synth.value.finalInit=function(a){a.value=function(){return a.gen(1),a.model.value}},d.defaults("flock.synth.frameRate",{gradeNames:["flock.synth.value","autoInit"],rate:"scheduled",fps:60,audioSettings:{rates:{scheduled:"{that}.options.fps"}}}),d.defaults("flock.synth.group",{gradeNames:["fluid.eventedComponent","flock.node","flock.nodeList","autoInit"],rate:f.rates.AUDIO}),f.synth.group.finalInit=function(a){a.rate=a.options.rate,a.enviro=a.enviro||f.enviro.shared,f.synth.group.makeDispatchedMethods(a,["input","get","set","gen","play","pause"]),a.init=function(){a.options.addToEnvironment!==!1&&a.enviro.tail(a)},a.init()},f.synth.group.makeDispatcher=function(a,b){return function(){var c,d,e;for(c=0;c<a.length;c++)d=a[c],e=d[b].apply(d,arguments);return e}},f.synth.group.makeDispatchedMethods=function(a,b){var c,d;for(d=0;d<b.length;d++)c=b[d],a[c]=f.synth.group.makeDispatcher(a.nodes,c,f.synth.group.dispatch);return a},d.defaults("flock.synth.polyphonic",{gradeNames:["flock.synth.group","autoInit"],noteSpecs:{on:{"env.gate":1},off:{"env.gate":0}},maxVoices:16,initVoicesLazily:!0,amplitudeKey:"env.sustain",amplitudeNormalizer:"static"}),f.synth.polyphonic.finalInit=function(b){return b.activeVoices={},b.freeVoices=[],b.noteChange=function(c,d,e){var f=b.options.noteSpecs[d];e=a.extend({},f,e),c.input(e)},b.noteOn=function(a,c){var d=b.nextFreeVoice();return b.activeVoices[a]&&b.noteOff(a),b.activeVoices[a]=d,b.noteChange(d,"on",c),d},b.noteOff=function(a,c){var d=b.activeVoices[a];return d?(b.noteChange(d,"off",c),delete b.activeVoices[a],b.freeVoices.push(d),d):null},b.createVoice=function(){var a,c=f.synth({synthDef:b.options.synthDef,addToEnvironment:!1}),d=b.options.amplitudeNormalizer,e=b.options.amplitudeKey;return d&&("function"==typeof d?d(c,e):"static"===d&&(a=1/b.options.maxVoices,c.input(e,a))),b.nodes.push(c),c},b.pooledVoiceAllocator=function(){return b.freeVoices.pop()},b.lazyVoiceAllocator=function(){return b.freeVoices.length>1?b.freeVoices.pop():Object.keys(b.activeVoices).length>b.options.maxVoices?null:b.createVoice()},b.init=function(){if(b.options.initVoicesLazily)b.nextFreeVoice=b.lazyVoiceAllocator;else{var a;for(a=0;a<b.options.maxVoices;a++)b.freeVoices[a]=b.createVoice();b.nextFreeVoice=b.pooledVoiceAllocator}},b.init(),b},d.defaults("flock.band",{gradeNames:["fluid.eventedComponent","autoInit"],invokers:{play:{func:"{that}.events.onPlay.fire"},pause:{func:"{that}.events.onPause.fire"},set:{func:"{that}.events.onSet.fire"}},events:{onPlay:null,onPause:null,onSet:null},distributeOptions:{source:"{that}.options.synthListeners",removeSource:!0,target:"{that flock.synth}.options.listeners"},synthListeners:{"{band}.events.onPlay":{func:"{that}.play"},"{band}.events.onPause":{func:"{that}.pause"}}}),f.bufferDesc=function(){throw new Error("flock.bufferDesc is not defined. Did you forget to include the flocking-buffers.js file?")}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";function a(){function a(a,c){var d=function(a,b){return b(c),this},e=function(a){return a(c),this};g.value=c,g.then="reject"===a?d:e,g.resolve=g.reject=function(){throw new Error("Promise already completed")},b(a,c)}function b(a,b){var c,d;for(c=0;c<f.length;c++)d=f[c],d[a]&&d[a](b);f=null}var c=function(b){a("resolve",b),g.state="fulfilled"},d=function(b){a("reject",b),g.state="rejected"},e=function(a,b){if(f)f.push({resolve:a,reject:b});else{var c="fulfilled"===g.state?a:b;c(g.value)}return this},f=[],g={state:"pending",value:void 0,resolve:c,reject:d,then:e,safe:{then:function(a,b){return g.then(a,b),this}}};return g}d.defaults("flock.promise",{gradeNames:["fluid.eventedComponent","autoInit"],members:{promise:{expander:{funcName:"flock.promise.make"}}}}),f.promise.make=function(){return new a},f.bufferDesc=function(a){var b=f.platform.isWebAudio&&a instanceof AudioBuffer?f.bufferDesc.fromAudioBuffer:f.isIterable(a)?f.bufferDesc.fromChannelArray:f.bufferDesc.expand;return b(a)},f.bufferDesc.inferFormat=function(a){var b=a.format,c=a.data;return b.sampleRate=b.sampleRate||44100,b.numSampleFrames=b.numSampleFrames||c.channels[0].length,b.duration=b.numSampleFrames/b.sampleRate,a},f.bufferDesc.fromChannelArray=function(a,b){var c={container:{},format:{numChannels:1,sampleRate:b},data:{channels:[a]}};return f.bufferDesc.inferFormat(c)},f.bufferDesc.expand=function(a){if(a.container=a.container||{},a.format=a.format||{},a.format.numChannels=a.format.numChannels||a.data.channels.length,a.data&&a.data.channels&&(1===a.format.numChannels&&1!==a.data.channels.length&&(a.data.channels=[a.data.channels]),a.format.numChannels!==a.data.channels.length))throw new Error("The specified number of channels does not match the actual channel data. numChannels was: "+a.format.numChannels+" but the sample data contains "+a.data.channels.length+" channels.");return f.bufferDesc.inferFormat(a)},f.bufferDesc.fromAudioBuffer=function(a){var b,c={container:{},format:{sampleRate:a.sampleRate,numChannels:a.numberOfChannels,numSampleFrames:a.length,duration:a.duration},data:{channels:[]}};for(b=0;b<a.numberOfChannels;b++)c.data.channels.push(a.getChannelData(b));return c},d.defaults("flock.bufferSource",{gradeNames:["fluid.eventedComponent","fluid.modelComponent","autoInit"],model:{state:"start",src:null},components:{bufferPromise:{createOnEvent:"onRefreshPromise",type:"flock.promise",options:{listeners:{onCreate:{"this":"{that}.promise",method:"then",args:["{bufferSource}.events.afterFetch.fire","{bufferSource}.events.onError.fire"]}}}}},invokers:{get:{funcName:"flock.bufferSource.get",args:["{that}","{arguments}.0"]},set:{funcName:"flock.bufferSource.set",args:["{that}","{arguments}.0"]},error:{funcName:"flock.bufferSource.error",args:["{that}","{arguments}.0"]}},listeners:{onCreate:{funcName:"{that}.events.onRefreshPromise.fire"},onRefreshPromise:{funcName:"{that}.applier.requestChange",args:["state","start"]},onFetch:{funcName:"{that}.applier.requestChange",args:["state","in-progress"]},afterFetch:[{funcName:"{that}.applier.requestChange",args:["state","fetched"]},{funcName:"{that}.events.onBufferUpdated.fire",args:["{arguments}.0"]}],onBufferUpdated:{funcName:"flock.enviro.shared.registerBuffer",args:["{arguments}.0"]},onError:{funcName:"{that}.applier.requestChange",args:["state","error"]}},events:{onRefreshPromise:null,onError:null,onFetch:null,afterFetch:null,onBufferUpdated:null}}),f.bufferSource.get=function(a,b){return"in-progress"===a.model.state||b.src===a.model.src&&!b.replace?a.bufferPromise.promise:(b.src&&("fetched"!==a.model.state&&"errored"!==a.model.state||a.model.src===b.src&&!b.replace||a.events.onRefreshPromise.fire(),"start"===a.model.state&&(a.model.src=b.src,a.events.onFetch.fire(b),f.audio.decode({src:b.src,success:function(c){b.id&&(c.id=b.id),a.set(c)},error:a.error}))),a.bufferPromise.promise)},f.bufferSource.set=function(a,b){var c=a.model.state;return("start"===c||"in-progress"===c)&&a.bufferPromise.promise.resolve(b),a.bufferPromise.promise},f.bufferSource.error=function(a,b){return a.bufferPromise.promise.reject(b),a.bufferPromise.promise},d.defaults("flock.bufferLoader",{gradeNames:["fluid.eventedComponent","autoInit"],members:{buffers:[]},bufferDefs:[],events:{afterBuffersLoaded:null},listeners:{onCreate:{funcName:"flock.bufferLoader.loadBuffers",args:["{that}.options.bufferDefs","{that}.buffers","{that}.events.afterBuffersLoaded.fire"]}}}),f.bufferLoader.idFromURL=function(a){var b=a.lastIndexOf("/"),c=b>-1?b+1:0,d=a.lastIndexOf("."),e=d>-1?d:a.length;return a.substring(c,e)},f.bufferLoader.idsFromURLs=function(a){return d.transform(a,f.bufferLoader.idFromURL)},f.bufferLoader.expandFileSequence=function(a){a=a||[];var b,c,d,e=[];for(b=0;b<a.length;b++)c=a[b],d=f.bufferLoader.idFromURL(c),e.push({id:d,url:c});return e},f.bufferLoader.loadBuffers=function(a,b,c){a=d.makeArray(a);for(var e={setBuffer:function(d){b.push(d),b.length===a.length&&c(b)}},g=0;g<a.length;g++){var h=a[g];void 0===h.id&&void 0!==h.url&&(h.id=f.bufferLoader.idFromURL(h.url)),f.parse.bufferForDef(a[g],e,f.enviro.shared)}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.parse"),f.parse.synthDef=function(a,b){return a||(a=[]),f.parse.synthDef.hasOutUGen(a)||(a={id:f.OUT_UGEN_ID,ugen:"flock.ugen.valueOut",inputs:{sources:a}},b.rate===f.rates.AUDIO&&(a.ugen="flock.ugen.out",a.inputs.bus=0,a.inputs.expand=b.audioSettings.chans)),f.parse.ugenForDef(a,b)},f.parse.synthDef.hasOutUGen=function(a){return!f.isIterable(a)&&(a.id===f.OUT_UGEN_ID||"flock.ugen.out"===a.ugen||"flock.ugen.valueOut"===a.ugen)},f.parse.makeUGen=function(b,c,d){var e=d.audioSettings.rates,g=d.audioSettings.blockSize;b.rate||(b.rate=f.rates.AUDIO);var h;h=b.options&&void 0!==b.options.sampleRate?b.options.sampleRate:e[b.rate],b.options=a.extend(!0,{},b.options,{sampleRate:h,rate:b.rate,audioSettings:{rates:e,blockSize:g}}),b.options.audioSettings.buffers=d.buffers,b.options.audioSettings.buses=d.buses;var i,j=b.rate===f.rates.AUDIO?g:1;if(f.hasTag(b.options,"flock.ugen.multiChannelOutput")){var k=b.options.numOutputs||1;i=[];for(var l=0;k>l;l++)i.push(new Float32Array(j))}else i=new Float32Array(j);return f.invoke(void 0,b.ugen,[c,i,b.options])},f.parse.reservedWords=["id","ugen","rate","inputs","options"],f.parse.specialInputs=["value","buffer","list","table","envelope"],f.parse.expandUGenDef=function(a){var b,c={};for(b in a)-1===f.parse.reservedWords.indexOf(b)&&(c[b]=a[b],delete a[b]);return a.inputs=c,a},f.parse.ugenDefForConstantValue=function(a){return{ugen:"flock.ugen.value",rate:f.rates.CONSTANT,inputs:{value:a}}},f.parse.expandValueDef=function(a){var b=typeof a;if("number"===b)return f.parse.ugenDefForConstantValue(a);if("object"===b)return a;throw new Error("Invalid value type found in ugen definition. UGenDef was: "+d.prettyPrintJSON(a))},f.parse.rateMap={ar:f.rates.AUDIO,kr:f.rates.CONTROL,sr:f.rates.SCHEDULED,dr:f.rates.DEMAND,cr:f.rates.CONSTANT},f.parse.expandRate=function(a,b){return a.rate=f.parse.rateMap[a.rate]||a.rate,b.overrideRate&&a.rate!==f.rates.CONSTANT&&(a.rate=b.rate),a},f.parse.ugenDef=function(a,b){var c=f.isIterable(a)?f.parse.ugensForDefs:f.parse.ugenForDef,d=c(a,b);return d},f.parse.ugenDef.mergeOptions=function(b){var c=d.defaults(b.ugen)||{};return c=d.copy(c),c.options=c.ugenOptions,delete c.ugenOptions,a.extend(!0,{},c,b)},f.parse.ugensForDefs=function(a,b){var c,d=[];for(c=0;c<a.length;c++)d[c]=f.parse.ugenForDef(a[c],b);return d},f.parse.ugenForDef=function(b,c){c=a.extend(!0,{audioSettings:f.enviro.shared.options.audioSettings,buses:f.enviro.shared.buses,buffers:f.enviro.shared.buffers},c);var e=c,g=e.visitors,h=e.audioSettings.rates;if(b=f.parse.expandValueDef(b),f.isIterable(b))return f.parse.ugensForDefs(b,c);b.inputs||(b=f.parse.expandUGenDef(b)),f.parse.expandRate(b,c),b=f.parse.ugenDef.mergeOptions(b,c);var i,j=b.inputs,k={};for(i in j){var l=j[i];null!==l&&(k[i]=f.input.shouldExpand(i,b)?f.parse.ugenForDef(l,c):l)}if(!b.ugen)throw new Error("Unit generator definition lacks a 'ugen' property; can't initialize the synth graph. Value: "+d.prettyPrintJSON(b));var m=f.parse.makeUGen(b,k,c);return b.id&&(m.id=b.id,m.nickName=b.id),m.options.ugenDef=b,g&&(g=d.makeArray(g),d.each(g,function(a){a(m,b,h)})),m},f.parse.expandBufferDef=function(a){return"string"==typeof a?{id:a}:f.isIterable(a)||a.data||a.format?f.bufferDesc(a):a},f.parse.bufferForDef=function(a,b,c){a=f.parse.expandBufferDef(a),a.data&&a.data.channels?(a=f.bufferDesc(a),f.parse.bufferForDef.resolveBuffer(a,b,c)):f.parse.bufferForDef.resolveDef(a,b,c)},f.parse.bufferForDef.findSource=function(a,b){var c;return b&&a.id?(c=b.bufferSources[a.id],c||(c=b.bufferSources[a.id]=f.bufferSource())):c=f.bufferSource(),c},f.parse.bufferForDef.bindToPromise=function(a,b,c){var d=function(a){b.events.onBufferUpdated.addListener(d),c&&c.setBuffer(a)},e=function(a){throw!a&&b.model.src&&b.model.src.indexOf(".aif")&&(a="if this is an AIFF file, you might need to include flocking-audiofile-compatibility.js in some browsers."),new Error("Error while resolving buffer "+b.model.src+": "+a)};a.then(d,e)},f.parse.bufferForDef.resolveDef=function(a,b,c){var d,e=f.parse.bufferForDef.findSource(a,c);a.src=a.url||a.src,a.selector&&"undefined"!=typeof document&&(a.src=document.querySelector(a.selector).files[0]),d=e.get(a),f.parse.bufferForDef.bindToPromise(d,e,b)},f.parse.bufferForDef.resolveBuffer=function(a,b,c){var d=f.parse.bufferForDef.findSource(a,c),e=d.set(a);f.parse.bufferForDef.bindToPromise(e,d,b)}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.applyDeferred=function(a,b,c){a&&(c="undefined"==typeof c?0:c,setTimeout(function(){a.apply(null,b)},c))},d.registerNamespace("flock.net"),f.net.readBufferFromUrl=function(a){var b=a.src,c=new XMLHttpRequest;c.onreadystatechange=function(){if(4===c.readyState)if(200===c.status)a.success(c.response,f.file.parseFileExtension(b));else{if(!a.error)throw new Error(c.statusText);a.error(c.statusText)}},c.open(a.method||"GET",b,!0),c.responseType=a.responseType||"arraybuffer",c.send(a.data)},d.registerNamespace("flock.file"),f.file.mimeTypes={"audio/wav":"wav","audio/x-wav":"wav","audio/wave":"wav","audio/x-aiff":"aiff","audio/aiff":"aiff","sound/aiff":"aiff"},f.file.typeAliases={aif:"aiff",wave:"wav"},f.file.parseFileExtension=function(a){var b,c,d=a.lastIndexOf(".");return 0>d?void 0:(b=a.substring(d+1),b=b.toLowerCase(),c=f.file.typeAliases[b],c||b)},f.file.parseMIMEType=function(a){return f.file.mimeTypes[a]},f.file.stringToBuffer=function(a){var b,c=a.length,d=new ArrayBuffer(c),e=new Uint8Array(d);for(b=0;c>b;b++)e[b]=a.charCodeAt(b);return e.buffer},f.file.readBufferFromDataUrl=function(a){var b=a.src,c=b.indexOf(","),d=b.substring(0,c),e=b.substring(c+1),g=d.indexOf(";base64"),h=g>-1,i=b.indexOf("data:")+5,j=h?g:c,k=b.substring(i,j);h&&(e=atob(e)),f.applyDeferred(function(){var b=f.file.stringToBuffer(e);a.success(b,f.file.parseMIMEType(k))})},f.file.readBufferFromFile=function(a){var b=new FileReader;return b.onload=function(b){a.success(b.target.result,f.file.parseFileExtension(a.src.name))},b.readAsArrayBuffer(a.src),b},d.registerNamespace("flock.audio"),f.audio.loadBuffer=function(a){var b=a.src||a.url;if(b){b instanceof ArrayBuffer&&f.applyDeferred(a.success,[b,a.type]);var c=f.audio.loadBuffer.readerForSource(b);c(a)}},f.audio.loadBuffer.readerForSource=function(a){return"undefined"!=typeof File&&a instanceof File?f.file.readBufferFromFile:0===a.indexOf("data:")?f.file.readBufferFromDataUrl:f.net.readBufferFromUrl},f.audio.decode=function(a){var b=a.success,c=function(c,e){var g=f.audio.decoderStrategies,h=g[e]||g["default"];a.decoder&&(h="string"==typeof a.decoder?d.getGlobalValue(a.decoder):a.decoder),h({rawData:c,type:e,success:b,error:a.error,sampleRate:a.sampleRate||(f.enviro.shared?f.enviro.shared.audioSettings.rates.audio:void 0)})};a.success=c,f.audio.loadBuffer(a)},f.audio.decode.webAudio=function(a){var b=f.enviro.shared.audioStrategy.context,c=function(b){var c=f.bufferDesc.fromAudioBuffer(b);a.success(c)};b.decodeAudioData(a.rawData,c,a.error)},f.audio.decoderStrategies={"default":f.audio.decode.webAudio},f.audio.registerDecoderStrategy=function(a,b){if(a)if("object"!=typeof a)"string"==typeof b&&(b=d.getGlobalValue(b)),f.audio.decoderStrategies[a]=b;else for(var c in a)f.audio.decoderStrategies[c]=a[c]}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.shim={URL:"undefined"!=typeof window?window.URL||window.webkitURL||window.msURL:void 0},f.worker=function(a){var b,c,d=typeof a;if("function"===d)a="("+a.toString()+")();";else if("string"!==d)throw new Error("A flock.worker must be initialized with a String or a Function.");return window.Blob?(c=new Blob([a],{type:"text/javascript"}),b=f.shim.URL.createObjectURL(c)):b="data:text/javascript;base64,"+window.btoa(a),new Worker(b)},d.registerNamespace("flock.scheduler"),d.defaults("flock.scheduler.intervalClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),f.scheduler.intervalClock.finalInit=function(a){a.scheduled={},a.schedule=function(b){var c=setInterval(function(){a.events.tick.fire(b)},b);a.scheduled[b]=c},a.clear=function(b){var c=a.scheduled[b];clearInterval(c),delete a.scheduled[b]},a.clearAll=function(){for(var b in a.scheduled)a.clear(b)},a.end=a.clearAll},d.defaults("flock.scheduler.scheduleClock",{gradeNames:["fluid.eventedComponent","autoInit"],events:{tick:null}}),f.scheduler.scheduleClock.finalInit=function(a){a.scheduled=[],a.schedule=function(b){var c;c=setTimeout(function(){a.clear(c),a.events.tick.fire(b)},b),a.scheduled.push(c)},a.clear=function(b,c){c=void 0===c?a.scheduled.indexOf(b):c,c>-1&&a.scheduled.splice(c,1),clearTimeout(b)},a.clearAll=function(){for(var b=0;b<a.scheduled.length;b++){var c=a.scheduled[b];clearTimeout(c)}a.scheduled.length=0},a.end=a.clearAll},d.defaults("flock.scheduler.webWorkerClock",{gradeNames:["fluid.modelComponent","fluid.eventedComponent","autoInit"],model:{messages:{schedule:{msg:"schedule"},clear:{msg:"clear"},clearAll:{msg:"clearAll"},end:{msg:"end"}}},events:{tick:null},clockType:"intervalClock"}),f.scheduler.webWorkerClock.finalInit=function(a){a.worker=new f.worker(f.scheduler.webWorkerClock.workerImpl),a.worker.postMessage({msg:"start",value:a.options.clockType}),a.worker.addEventListener("message",function(b){a.events.tick.fire(b.data.value)},!1),a.postToWorker=function(b,c){var d=a.model.messages[b];void 0!==c&&(d.value=c),a.worker.postMessage(d)},a.schedule=function(b){a.postToWorker("schedule",b)},a.clear=function(b){a.postToWorker("clear",b)},a.clearAll=function(){a.postToWorker("clearAll")},a.end=function(){a.postToWorker("end")}},f.scheduler.webWorkerClock.workerImpl=function(){var a=a||{};a.worker=a.worker||{},a.worker.clock=function(){var a={};return a.tick=function(a){self.postMessage({msg:"tick",value:a})},a},a.worker.intervalClock=function(){var b=a.worker.clock();return b.scheduled={},b.schedule=function(a){var c=setInterval(function(){b.tick(a)},a);b.scheduled[a]=c},b.clear=function(a){var c=b.scheduled[a];clearInterval(c),delete b.scheduled[a]},b.clearAll=function(){for(var a in b.scheduled)b.clear(a)},b},a.worker.scheduleClock=function(){var b=a.worker.clock();return b.scheduled=[],b.schedule=function(a){var c;c=setTimeout(function(){b.clear(c),b.tick(a)},a),b.scheduled.push(c)},b.clear=function(a,c){c=void 0===c?b.scheduled.indexOf(a):c,c>-1&&b.scheduled.splice(c,1),clearTimeout(a)},b.clearAll=function(){for(var a=0;a<b.scheduled.length;a++){var c=b.scheduled[a];clearTimeout(c)}b.scheduled.length=0},b},self.addEventListener("message",function(b){"start"===b.data.msg?a.clock=a.worker[b.data.value]():"end"===b.data.msg?a.clock&&(a.clock.clearAll(),self.close()):a.clock&&a.clock[b.data.msg](b.data.value)},!1)},d.defaults("flock.scheduler.webWorkerIntervalClock",{gradeNames:["flock.scheduler.webWorkerClock","autoInit"],clockType:"intervalClock"}),d.defaults("flock.scheduler.webWorkerScheduleClock",{gradeNames:["flock.scheduler.webWorkerClock","autoInit"],clockType:"scheduleClock"}),f.scheduler.makeOneShotValueListener=function(a,b,c){var d=function(e){e===a&&(b(e),c(d))};return d},f.scheduler.makeRepeatingValueListener=function(a,b){return function(c){c===a&&b(c)}},d.defaults("flock.scheduler.async",{gradeNames:["fluid.eventedComponent","autoInit"],components:{timeConverter:{type:"flock.convert.seconds"},intervalClock:{type:"flock.scheduler.webWorkerIntervalClock"},scheduleClock:{type:"flock.scheduler.webWorkerScheduleClock"}}}),f.scheduler.async.finalInit=function(a){a.intervalListeners={},a.scheduleListeners=[],a.addIntervalListener=function(b,c){var d=f.scheduler.makeRepeatingValueListener(b,c);return d.wrappedListener=c,a.intervalListeners[b]=a.intervalListeners[b]||[],a.intervalListeners[b].push(d),a.intervalClock.events.tick.addListener(d),d},a.addScheduleListener=function(b,c){var d=f.scheduler.makeOneShotValueListener(b,c,a.clear);return d.wrappedListener=c,a.scheduleListeners.push(d),a.scheduleClock.events.tick.addListener(d),d},a.scheduleChange=function(b,c,d,e){var g=a.timeConverter.value(b),h=f.scheduler.async.prepareSchedulerFn(c,a.events),i=d(g,h);return e.schedule(g),i},a.repeat=function(b,c){return a.scheduleChange(b,c,a.addIntervalListener,a.intervalClock)},a.once=function(b,c){return a.scheduleChange(b,c,a.addScheduleListener,a.scheduleClock)},a.sequence=function(b,c){for(var d,e=[],f=0;f<b.length;f++)d=a.once(b[f],c),e.push(d);return e},a.schedule=function(b){b=f.isIterable(b)?b:[b];var c,d;for(c=0;c<b.length;c++)d=b[c],f.invoke(a,d.interval,[d.time,d.change])},a.clear=function(b){if(b){var c,d=a.scheduleListeners.indexOf(b);if(d>-1)return a.scheduleClock.events.tick.removeListener(b),void a.scheduleListeners.splice(d,1);a.intervalClock.events.tick.removeListener(b);for(c in a.intervalListeners)d=a.intervalListeners[c].indexOf(b),d>-1&&a.intervalListeners[c].splice(d,1)}},a.clearRepeat=function(b){a.intervalClock.clear(b);var c,d,e=a.intervalListeners[b];if(e){for(c=0;c<e.length;c++)d=e[c],a.intervalClock.events.tick.removeListener(d);return e.length=0,d}},a.clearAll=function(){a.intervalClock.clearAll();for(var b in a.intervalListeners)a.clearRepeat(b);a.scheduleClock.clearAll();for(var c in a.scheduleListeners)a.clear(c)},a.end=function(){a.intervalClock.end(),a.scheduleClock.end()},a.options.score&&a.schedule(a.options.score)},f.scheduler.async.prepareSchedulerFn=function(a,b){var c,d=typeof a;return c="function"===d?a:"string"===d?b[a].fire:f.scheduler.async.evaluateChangeSpec(a)},f.scheduler.async.evaluateChangeSpec=function(a){var b={},c={};for(var d in a.values){var e=a.values[d];e.synthDef?b[d]=f.synth.value(e):c[d]=e}return function(){for(var d in b){var e=b[d];c[d]=e.value()}var g="string"==typeof a.synth?f.enviro.shared.namedNodes[a.synth]:a.synth;g.set(c)}},d.defaults("flock.scheduler.async.tempo",{gradeNames:["flock.scheduler.async","autoInit"],bpm:60,components:{timeConverter:{type:"flock.convert.beats",options:{bpm:"{tempo}.options.bpm"}}}}),d.registerNamespace("flock.convert"),f.convert.makeStatelessConverter=function(a){return function(){return{value:a}}},f.convert.ms=f.convert.makeStatelessConverter(d.identity),f.convert.seconds=f.convert.makeStatelessConverter(function(a){return 1e3*a}),d.defaults("flock.convert.beats",{gradeNames:["fluid.littleComponent","autoInit"],bpm:60}),f.convert.beats.finalInit=function(a){a.value=function(b){var c=a.options.bpm;return 0>=c?0:b/c*6e4}}}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.webAudio"),f.webAudio.createNode=function(a,b,c,e){"string"!=typeof b&&(c=b.args,e=b.params,b=b.node),c=void 0===c||null===c?[]:d.isArrayable(c)?c:[c];var g="create"+b,h=g.indexOf("Node");h>-1&&(g=g.substring(0,h));var i=a[g].apply(a,c);return f.webAudio.initializeNodeInputs(i,e),i},f.webAudio.initializeNodeInputs=function(a,b){if(a&&b){for(var c in b)a[c].value=b[c];return a}},d.registerNamespace("flock.webAudio.chrome"),f.webAudio.chrome.getSources=function(a){return MediaStreamTrack.getSources(function(b){var c=d.transform(b,function(a){return a.deviceId=a.id,a});a(c)})},f.webAudio.mediaStreamFailure=function(){f.fail("Media Capture and Streams are not supported on this browser.")};var a={AudioContext:window.AudioContext||window.webkitAudioContext,getUserMediaImpl:navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||f.webAudio.mediaStreamFailure,getUserMedia:function(){f.shim.getUserMediaImpl.apply(navigator,arguments)},getMediaDevicesImpl:navigator.getMediaDevices?navigator.getMediaDevices:"undefined"!=typeof window.MediaStreamTrack?f.webAudio.chrome.getSources:f.webAudio.mediaStreamFailure,getMediaDevice:function(){f.shim.getMediaDevicesImpl.apply(navigator,arguments)}};b.extend(f.shim,a),d.defaults("flock.audioStrategy.web",{gradeNames:["flock.audioStrategy","autoInit"],members:{context:"{contextWrapper}.context",sampleRate:"{that}.context.sampleRate",chans:{expander:{funcName:"flock.audioStrategy.web.calculateChannels",args:["{contextWrapper}.context","{enviro}.options.audioSettings.chans"]}},jsNode:{expander:{funcName:"flock.audioStrategy.web.createScriptProcessor",args:["{contextWrapper}.context","{enviro}.options.audioSettings.bufferSize","{enviro}.options.audioSettings.numInputBuses","{that}.chans"]}}},model:{isGenerating:!1,shouldInitIOS:f.platform.isIOS,krPeriods:{expander:{funcName:"flock.audioStrategy.web.calcNumKrPeriods",args:"{enviro}.options.audioSettings"}}},invokers:{start:{func:"{that}.events.onStart.fire"},stop:{func:"{that}.events.onStop.fire"},reset:{func:"{that}.events.onReset.fire"}},components:{contextWrapper:{type:"flock.webAudio.contextWrapper"},nativeNodeManager:{type:"flock.webAudio.nativeNodeManager"},inputDeviceManager:{type:"flock.webAudio.inputDeviceManager"}},events:{
onStart:null,onStop:null,onReset:null},listeners:{onCreate:[{funcName:"flock.audioStrategy.web.setChannelState",args:["{that}.chans","{contextWrapper}.context.destination"]},{funcName:"flock.audioStrategy.web.pushAudioSettings",args:["{that}.sampleRate","{that}.chans","{enviro}.options.audioSettings"]},{funcName:"flock.audioStrategy.web.bindWriter",args:["{that}.jsNode","{nodeEvaluator}","{nativeNodeManager}","{that}.model","{enviro}.options.audioSettings"]}],onStart:[{func:"{that}.applier.change",args:["isGenerating",!0]},{funcName:"flock.audioStrategy.web.iOSStart",args:["{that}.model","{that}.applier","{contextWrapper}.context","{that}.jsNode"]},{func:"{nativeNodeManager}.connect"}],onStop:[{func:"{that}.applier.change",args:["isGenerating",!1]},{func:"{nativeNodeManager}.disconnect"}],onReset:[{func:"{that}.stop"},{func:"{nativeNodeManager}.removeAllInputs"},{func:"{that}.applier.change",args:["playState.written",0]}]}}),f.audioStrategy.web.calculateChannels=function(a,b){return f.platform.browser.safari?a.destination.channelCount:Math.min(b,a.destination.maxChannelCount)},f.audioStrategy.web.pushAudioSettings=function(a,b,c){c.rates.audio=a,c.chans=b},f.audioStrategy.web.setChannelState=function(a,b){f.platform.browser.safari||(b.channelCount=a,b.channelCountMode="explicit",b.channelInterpretation="discrete")},f.audioStrategy.web.calcNumKrPeriods=function(a){return a.bufferSize/a.blockSize},f.audioStrategy.web.createScriptProcessor=function(a,b,c,d){var e=a.createScriptProcessor?"createScriptProcessor":"createJavaScriptNode",f=a[e](b,c,d);return f.channelCountMode="explicit",f},f.audioStrategy.web.bindWriter=function(a,b,c,d,e){a.model=d,a.evaluator=b,a.audioSettings=e,a.inputNodes=c.inputNodes,a.onaudioprocess=f.audioStrategy.web.writeSamples},f.audioStrategy.web.writeSamples=function(a){var b,c,d,e=this.model,g=this.inputNodes.length,h=this.evaluator,i=this.audioSettings,j=a.inputBuffer,k=a.outputBuffer,l=e.krPeriods,m=h.buses,n=i.blockSize,o=i.chans,p=j.numberOfChannels;if(h.nodes.length<1)for(b=0;o>b;b++)f.generate.silence(k.getChannelData(b));else for(c=0;l>c;c++){var q=c*n;if(h.clearBuses(),g>0)for(b=0;p>b;b++){var r=j.getChannelData(b),s=o+b,t=m[s];for(d=0;n>d;d++)t[d]=r[d+q]}for(h.gen(),b=0;o>b;b++){var u=m[b],v=k.getChannelData(b);for(d=0;n>d;d++)v[d+q]=u[d]}}},f.audioStrategy.web.iOSStart=function(a,b,c,d){if(a.shouldInitIOS){var e=c.createBufferSource();e.connect(d),e.start(0),e.stop(0),e.disconnect(0),b.change("shouldInitIOS",!1)}},d.defaults("flock.webAudio.contextWrapper",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"@expand:flock.webAudio.contextWrapper.create()"},listeners:{onCreate:[{funcName:"flock.webAudio.contextWrapper.registerSingleton",args:["{that}"]}]}}),f.webAudio.contextWrapper.create=function(){var a=d.staticEnvironment.webAudioContextWrapper;return a?a.context:new f.shim.AudioContext},f.webAudio.contextWrapper.registerSingleton=function(a){d.staticEnvironment.webAudioContextWrapper=a},d.defaults("flock.webAudio.nativeNodeManager",{gradeNames:["fluid.eventedComponent","autoInit"],audioSettings:"{enviro}.options.audioSettings",members:{outputNode:void 0,inputNodes:[],merger:{expander:{funcName:"flock.webAudio.nativeNodeManager.createInputMerger",args:["{contextWrapper}.context","{enviro}.options.audioSettings.numInputBuses","{web}.jsNode"]}}},invokers:{connect:{funcName:"flock.webAudio.nativeNodeManager.connect",args:["{that}.merger","{web}.jsNode","{that}.outputNode","{contextWrapper}.context.destination"]},createNode:{funcName:"flock.webAudio.createNode",args:["{contextWrapper}.context","{arguments}.0","{arguments}.1","{arguments}.2"]},createInputNode:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2","{arguments}.3"]},createMediaStreamInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaStreamSource","{arguments}.0",void 0,"{arguments}.1"]},createMediaElementInput:{funcName:"flock.webAudio.nativeNodeManager.createInputNode",args:["{that}","MediaElementSource","{arguments}.0",void 0,"{arguments}.1"]},createOutputNode:{funcName:"flock.webAudio.nativeNodeManager.createOutputNode",args:["{that}","{arguments}.0","{arguments}.1","{arguments}.2"]},disconnect:{funcName:"flock.webAudio.nativeNodeManager.disconnect",args:["{that}.merger","{web}.jsNode","{that}.outputNode"]},insertInput:{funcName:"flock.webAudio.nativeNodeManager.insertInput",args:["{that}","{enviro}","{arguments}.0","{arguments}.1"]},removeInput:{funcName:"flock.webAudio.nativeNodeManager.removeInput",args:["{arguments}.0","{that}.inputNodes"]},removeAllInputs:{funcName:"flock.webAudio.nativeNodeManager.removeAllInputs",args:"{that}.inputNodes"},insertOutput:{funcName:"flock.webAudio.nativeNodeManager.insertOutput",args:["{that}","{arguments}.0"]},removeOutput:{funcName:"flock.webAudio.nativeNodeManager.removeOutput",args:["{web}.jsNode"]}},listeners:{onCreate:{func:"{that}.insertOutput",args:"{web}.jsNode"}}}),f.webAudio.nativeNodeManager.createInputNode=function(a,b,c,d,e){var f=a.createNode(b,c,d);return a.insertInput(f,e)},f.webAudio.nativeNodeManager.createOutputNode=function(a,b,c,d){var e=a.createNode(b,c,d);return a.insertOutput(e)},f.webAudio.nativeNodeManager.createInputMerger=function(a,b,c){var d=a.createChannelMerger(b);return d.channelInterpretation="discrete",d.connect(c),d},f.webAudio.nativeNodeManager.connect=function(a,b,c,d){a.connect(b),c.connect(d),b!==c&&b.connect(c)},f.webAudio.nativeNodeManager.disconnect=function(a,b,c){a.disconnect(0),b.disconnect(0),c.disconnect(0)},f.webAudio.nativeNodeManager.removeAllInputs=function(a){for(var b=0;b<a.length;b++){var c=a[b];c.disconnect(0)}a.length=0},f.webAudio.nativeNodeManager.insertInput=function(a,b,c,d){var e=a.options.audioSettings.numInputBuses;if(a.inputNodes.length>=e)return void f.fail("There are too many input nodes connected to Flocking. The maximum number of input buses is currently set to "+e+". Either remove an existing input node or increase Flockings numInputBuses option.");d=void 0===d?b.acquireNextBus("input"):d;var g=d-b.audioSettings.chans;return a.inputNodes.push(c),c.connect(a.merger,0,g),d},f.webAudio.nativeNodeManager.removeInput=function(a,b){var c=b.indexOf(a);c>-1&&b.splice(c,1),a.disconnect(0)},f.webAudio.nativeNodeManager.insertOutput=function(a,b){return a.outputNode&&a.outputNode.disconnect(0),a.outputNode=b,b},f.webAudio.nativeNodeManager.removeOutput=function(a){f.webAudio.nativeNodeManager.insertOutput(a)},d.defaults("flock.webAudio.inputDeviceManager",{gradeNames:["fluid.eventedComponent","autoInit"],members:{context:"{contextWrapper}.context"},invokers:{openAudioDevice:{funcName:"flock.webAudio.inputDeviceManager.openAudioDevice",args:["{arguments}.0","{that}.openAudioDeviceWithId","{that}.openFirstAudioDeviceWithLabel","{that}.openAudioDeviceWithConstraints"]},openAudioDeviceWithConstraints:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithConstraints",args:["{that}.context","{enviro}","{nativeNodeManager}.createMediaStreamInput","{arguments}.0"]},openAudioDeviceWithId:{funcName:"flock.webAudio.inputDeviceManager.openAudioDeviceWithId",args:["{arguments}.0","{that}.openAudioDeviceWithConstraints"]},openFirstAudioDeviceWithLabel:{funcName:"flock.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel",args:["{arguments}.0","{that}.openAudioDeviceWithId"]}}}),f.webAudio.inputDeviceManager.openAudioDevice=function(a,b,c,d){if(a){if(a.id)return b(a.id);if(a.label)return c(a.label)}return d()},f.webAudio.inputDeviceManager.openAudioDeviceWithId=function(a,b){var c={audio:{optional:[{sourceId:a}]}};b(c)},f.webAudio.inputDeviceManager.openFirstAudioDeviceWithLabel=function(a,b){a&&f.shim.getMediaDevices(function(c){var e=c.filter(function(b){return b.label.toLowerCase()===a.toLowerCase()?!0:void 0});e.length>0?b(e[0].deviceId):d.log(d.logLevel.IMPORTANT,"An audio device named '"+a+"' could not be found.")})},f.webAudio.inputDeviceManager.openAudioDeviceWithConstraints=function(a,b,c,e){function g(a){d.log(d.logLevel.IMPORTANT,"An error occurred while trying to access the user's microphone. "+a)}function h(a){c(a,i)}e=e||{audio:!0};var i=b.acquireNextBus("input");return f.shim.getUserMedia(e,h,g),i},d.demands("flock.audioStrategy.platform","flock.platform.webAudio",{funcName:"flock.audioStrategy.web"})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery"),b=f.requireModule("DSP","dspapi"),c=f.requireModule("Filter","dspapi");f.isUGen=function(a){return a&&a.tags&&a.tags.indexOf("flock.ugen")>-1},f.aliasUGen=function(b,c,e,g){var h=f.get(b);f.set(h,c,function(b,c,d){return d=a.extend(!0,{},g,d),h(b,c,d)}),d.defaults(b+"."+c,e)},f.aliasUGens=function(a,b){var c,d;for(c in b)d=b[c],f.aliasUGen(a,c,{inputs:d.inputDefaults},d.options)},f.krMul=function(a,b,c){var d,e=c.output[0];for(d=0;a>d;d++)b[d]=b[d]*e},f.mul=function(a,b,c){var d,e=c.output;for(d=0;a>d;d++)b[d]=b[d]*e[d]},f.krAdd=function(a,b,c,d){var e,f=d.output[0];for(e=0;a>e;e++)b[e]=b[e]+f},f.add=function(a,b,c,d){var e,f=d.output;for(e=0;a>e;e++)b[e]=b[e]+f[e]},f.krMulAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f+g[e]},f.mulKrAdd=function(a,b,c,d){var e,f=c.output,g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f[e]+g},f.krMulKrAdd=function(a,b,c,d){var e,f=c.output[0],g=d.output[0];for(e=0;a>e;e++)b[e]=b[e]*f+g},f.mulAdd=function(a,b,c,d){var e,f=c.output,g=d.output;for(e=0;a>e;e++)b[e]=b[e]*f[e]+g[e]},f.onMulAddInputChanged=function(a){var b,c=a.inputs.mul,d=a.inputs.add;return c||d?(b=c?d?c.rate!==f.rates.AUDIO?d.rate!==f.rates.AUDIO?f.krMulKrAdd:f.krMulAdd:d.rate!==f.rates.AUDIO?f.mulKrAdd:f.mulAdd:c.rate!==f.rates.AUDIO?f.krMul:f.mul:d.rate!==f.rates.AUDIO?f.krAdd:f.add,void(a.mulAdd=function(e){b(e,a.output,c,d)})):void(a.mulAdd=f.noOp)},f.ugen=function(a,b,c){c=c||{};var e={rate:c.rate||f.rates.AUDIO,inputs:a,output:b,options:c,model:c.model||{unscaledValue:0,value:0},multiInputs:{},tags:["flock.ugen"]};return e.lastOutputIdx=e.output.length-1,e.get=function(a){return f.input.get(e.inputs,a)},e.set=function(a,b){return f.input.set(e.inputs,a,b,e,function(a){return null!==a&&void 0!==a?f.parse.ugenDef(a,{audioSettings:e.options.audioSettings,buses:e.options.audioSettings.buses,buffers:e.options.audioSettings.buffers}):void 0})},e.input=function(a,b){return a?"string"==typeof a?arguments.length<2?e.get(a):e.set(a,b):f.isIterable(a)?e.get(a):e.set(a,b):void 0},e.calculateStrides=function(){var a,b,c,g=e.model,h=e.options.strideInputs,i=e.inputs;if(g.strides=g.strides||{},h)for(a=0;a<h.length;a++)b=h[a],c=i[b],c?g.strides[b]=c.rate===f.rates.AUDIO?1:0:d.log(d.logLevel.WARN,"An invalid input ('"+b+"') was found on a unit generator: "+e)},e.collectMultiInputs=function(){var a,b,c,d,g=e.options.multiInputNames,h=e.multiInputs;for(a=0;a<g.length;a++)b=g[a],c=h[b],c?c.length=0:c=h[b]=[],d=e.inputs[b],f.ugen.collectMultiInputs(d,c)},e.onInputChanged=function(a){var b=e.options.multiInputNames;f.onMulAddInputChanged(e),e.options.strideInputs&&e.calculateStrides(),!b||a&&!b.indexOf(a)||e.collectMultiInputs()},e.init=function(){var a,b,c,g=d.makeArray(e.options.tags),h=e.model,i=e.options;for(a=0;a<g.length;a++)e.tags.push(g[a]);if(b=i.audioSettings=i.audioSettings||f.enviro.shared.audioSettings,h.sampleRate=i.sampleRate||b.rates[e.rate],h.nyquistRate=h.sampleRate,h.blockSize=e.rate===f.rates.AUDIO?b.blockSize:1,h.sampleDur=1/h.sampleRate,e.interpolate=f.interpolate.none,i.interpolation){var j=f.interpolate[i.interpolation];j?e.interpolate=j:d.log(d.logLevel.IMPORTANT,"An invalid interpolation type of '"+i.interpolation+"' was specified. Defaulting to none.")}e.rate===f.rates.DEMAND&&e.inputs.freq&&(c=f.parse.ugenDefForConstantValue(1),e.inputs.freq=f.parse.ugenDef(c))},e.init(),e},f.ugen.collectMultiInputs=function(a,b){f.isIterable(a)||(a=a=d.makeArray(a));for(var c=0;c<a.length;c++){var e=a[c];f.ugen.collectChannelsForInput(e,b)}return b},f.ugen.collectChannelsForInput=function(a,b){var c,d=f.hasTag(a,"flock.ugen.multiChannelOutput"),e=d?a.output:[a.output];for(c=0;c<e.length;c++)b.push({rate:a.rate,output:e[c]});return b},f.ugen.lastOutputValue=function(a,b){return b[a-1]},f.ugen.value=function(a,b,c){var d=f.ugen(a,b,c);return d.value=function(){return d.model.value},d.dynamicGen=function(a){for(var b=d.output,c=d.model,e=0;a>e;e++)b[e]=c.unscaledValue;d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,b)},d.onInputChanged=function(){var a=d.inputs,b=d.model;b.value=b.unscaledValue=a.value,"constant"!==d.rate?d.gen=d.dynamicGen:d.gen=void 0,f.onMulAddInputChanged(d),d.dynamicGen(1)},d.onInputChanged(),d},d.defaults("flock.ugen.value",{rate:"control",inputs:{value:1,mul:null,add:null},ugenOptions:{model:{unscaledValue:1,value:1},tags:["flock.ugen.valueType"]}}),f.ugen.silence=function(a,b,c){var d=f.ugen(a,b,c);return d.onInputChanged=function(){for(var a=0;a<d.output.length;a++)d.output[a]=0},d.onInputChanged(),d},d.defaults("flock.ugen.silence",{rate:"constant"}),f.ugen.passThrough=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs.source.output,h=d.output;for(b=0;b<g.length;b++)h[b]=c=g[b];for(;a>b;b++)h[b]=c=0;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged(),d},d.defaults("flock.ugen.passThrough",{rate:"audio",inputs:{source:null,mul:null,add:null}}),f.ugen.change=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){for(var b,c=d.model,e=d.inputs.initial.output,f=c.strides.initial,g=d.inputs.target.output,h=c.strides.target,i=d.output,j=c.samplesLeft,k=c.crossfadeLevel,l=0,m=0,n=0;a>l;l++,m+=f,n+=h)j>0?(b=e[m],j--):k>0?(b=e[m]*k+g[n]*(1-k),k-=c.crossfadeStepSize):b=g[n],i[l]=b;c.samplesLeft=j,c.crossfadeLevel=k,c.value=c.unscaledValue=b},d.onInputChanged=function(a){var b=d.model,c=d.inputs;"time"!==a&&a||(b.samplesLeft=Math.round(c.time.output[0]*b.sampleRate)),"crossfade"!==a&&a||(b.crossfadeStepSize=1/Math.round(c.crossfade.output[0]*b.sampleRate),b.crossfadeLevel=c.crossfade.output[0]>0?1:0),d.calculateStrides()},d.onInputChanged(),d},d.defaults("flock.ugen.change",{rate:"audio",inputs:{initial:0,target:0,time:0,crossfade:0},ugenOptions:{model:{samplesLeft:0,crossfadeStepSize:0,crossfadeLevel:0,unscaledValue:0,value:0},strideInputs:["initial","target"]}}),f.ugen.valueChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,f=d.model,g=d.inputs.source.output,h=d.output;for(b=0,c=0;a>b;b++,c+=f.strides.source)e=g[c],h[b]=e!==f.prevVal?1:0,f.prevVal=e;f.value=f.unscaledValue=e},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevVal=null)},d.calculateStrides(),d},d.defaults("flock.ugen.valueChangeTrigger",{rate:"control",inputs:{source:0},ugenOptions:{model:{unscaledValue:0,value:0,prevVal:0},strideInputs:["source"]}}),f.ugen.inputChangeTrigger=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.inputs.source.output,k=i.strides.source,l=d.inputs.duration.output,m=i.strides.duration,n=i.prevDur,o=d.output;for(b=c=e=0;a>b;b++,c+=k,e+=m)g=j[c],h=l[e],h!==n&&(i.prevDur=h,i.remainingOpenSamples=g>0?h>0?i.sampleRate*h:1:0),i.remainingOpenSamples>0?(o[b]=g,i.remainingOpenSamples--):o[b]=0;i.value=i.unscaledValue=f.ugen.lastOutputValue(a,o)},d.onInputChanged=function(a){d.calculateStrides(),"source"===a&&(d.model.prevDur=null)},d.calculateStrides(),d},d.defaults("flock.ugen.inputChangeTrigger",{rate:"control",inputs:{source:0,duration:0},ugenOptions:{model:{unscaledValue:0,value:0,prevDuration:0,remainingOpenSamples:0},strideInputs:["source","duration"]}}),f.ugen.triggerCallback=function(a,b,c){var e=f.ugen(a,b,c);return e.gen=function(a){var b,c,d,f,g,h=e.model,i=e.options,j=e.output,k=e.inputs,l=h.strides.trigger,m=h.strides.source,n=k.trigger.output,o=k.source.output,p=i.callback,q=p.func,r=p.args,s=p["this"],t=h.lastArgIdx,u=h.prevTrig;for(b=c=d=0;a>b;b++,c+=l,d+=m)f=n[c],g=o[d],f>0&&0>=u&&q&&(r[t]=g,q.apply(s,r)),j[b]=g,u=f;h.prevTrig=u,h.value=h.unscaledValue=g},e.onInputChanged=function(){var a=e.options,b=e.model,c=a.callback,f=c.funcName;if(f)c.func=d.getGlobalValue(f);else if(c["this"]&&c.method){if("string"!=typeof c["this"])throw new Error("flock.ugen.triggerCallback doesn't support raw 'this' objects.Use a global key path instead.");c["this"]="string"==typeof c["this"]?d.getGlobalValue(c["this"]):c["this"],c.func=d.get(c["this"],c.method)}b.lastArgIdx=c.args.length,e.calculateStrides()},e.onInputChanged(),e},d.defaults("flock.ugen.triggerCallback",{rate:"audio",inputs:{source:0,trigger:0},ugenOptions:{model:{unscaledValue:0,value:0,funcName:void 0,lastArgIdx:0},callback:{"this":void 0,method:void 0,func:void 0,args:[]},strideInputs:["source","trigger"]}}),f.ugen.math=function(a,c,d){var e=f.ugen(a,c,d);return e.expandedSource=new Float32Array(e.options.audioSettings.blockSize),e.krSourceKrInputGen=function(){var a=e.model,c=e.activeInput,d=e.inputs[c],g=e.output,h=f.generate(e.expandedSource,e.inputs.source.output[0]);b[c](g,h,d.output[0]),a.value=a.unscaledValue=g[g.length-1]},e.krSourceArInputGen=function(){var a=e.model,c=e.activeInput,d=e.inputs[c],g=e.output,h=f.generate(e.expandedSource,e.inputs.source.output[0]);b[c](g,h,d.output),a.value=a.unscaledValue=g[g.length-1]},e.arSourceKrInputGen=function(){var a=e.model,c=e.activeInput,d=e.inputs[c],f=e.output,g=e.inputs.source.output;b[c](f,g,d.output[0]),a.value=a.unscaledValue=f[f.length-1]},e.arSourceArInputGen=function(){var a=e.model,c=e.activeInput,d=e.inputs[c],f=e.output;b[c](e.output,e.inputs.source.output,d.output),a.value=a.unscaledValue=f[f.length-1]},e.onInputChanged=function(){var a,b,c,d=Object.keys(e.inputs);for(a=0;a<d.length;a++)if(b=d[a],"source"!==b){e.activeInput=b,c="audio"===e.inputs[b].rate,e.gen="audio"===e.inputs.source.rate?c?e.arSourceArInputGen:e.arSourceKrInputGen:c?e.krSourceArInputGen:e.krSourceKrInputGen;break}},e.init=function(){if("undefined"==typeof b)throw new Error("DSP is undefined. Please include dspapi.js to use the flock.math unit generator.");e.onInputChanged()},e.init(),e},d.defaults("flock.ugen.math",{rate:"audio",inputs:{source:null}}),f.ugen.sum=function(a,b,c){var d=f.ugen(a,b,c);return d.copyGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.sources.output;for(b=0;a>b;b++)e[b]=g[b];c.value=c.unscaledValue=f.ugen.lastOutputValue(a,e)},d.sumGen=function(a){var b,c,e,g=d.model,h=d.inputs.sources,i=d.output;for(b=0;a>b;b++){for(e=0,c=0;c<h.length;c++)e+=h[c].output[b];i[b]=e}g.value=g.unscaledValue=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){"number"==typeof d.inputs.sources.length?d.gen=d.sumGen:d.gen=d.copyGen},d.onInputChanged(),d},d.defaults("flock.ugen.sum",{rate:"audio",inputs:{sources:null}}),f.ugen.osc=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.inputs,k=j.freq.output,l=j.phase.output,m=j.table,n=i.tableLen,o=i.tableIncHz,p=i.tableIncRad,q=d.output,r=i.phase;for(b=0,c=0,e=0;a>b;b++,c+=i.strides.phase,e+=i.strides.freq)g=r+l[c]*p,g>=n?g-=n:0>g&&(g+=n),q[b]=h=d.interpolate(g,m),r+=k[e]*o,r>=n?r-=n:0>r&&(r+=n);i.phase=r,i.unscaledValue=h,d.mulAdd(a),i.value=f.ugen.lastOutputValue(a,q)},d.onInputChanged=function(a){if(f.ugen.osc.onInputChanged(d),!a||"table"===a){var b=d.model,c=d.inputs.table;c.length<1&&(c=d.inputs.table=f.ugen.osc.emptyTable),b.tableLen=c.length,b.tableIncHz=b.tableLen/b.sampleRate,b.tableIncRad=b.tableLen/f.TWOPI}},d.onInputChanged(),d},f.ugen.osc.emptyTable=new Float32Array([0,0,0]),f.ugen.osc.onInputChanged=function(a){a.calculateStrides(),f.onMulAddInputChanged(a)},d.defaults("flock.ugen.osc",{rate:"audio",inputs:{freq:440,phase:0,table:[],mul:null,add:null},ugenOptions:{interpolation:"linear",model:{phase:0,unscaledValue:0,value:0},strideInputs:["freq","phase"]},tableSize:8192}),f.ugen.osc.define=function(a,b){var c=a.lastIndexOf("."),e=a.substring(0,c),g=a.substring(c+1),h=f.get(e);h[g]=function(a,c,e){var g=d.defaults("flock.ugen.osc"),h=d.merge(null,g,e),i=h.tableSize;return a.table=f.fillTable(i,b),f.ugen.osc(a,c,e)},d.defaults(a,d.defaults("flock.ugen.osc"))},f.ugen.osc.define("flock.ugen.sinOsc",f.tableGenerators.sin),f.ugen.osc.define("flock.ugen.triOsc",f.tableGenerators.tri),f.ugen.osc.define("flock.ugen.sawOsc",f.tableGenerators.saw),f.ugen.osc.define("flock.ugen.squareOsc",f.tableGenerators.square),f.ugen.sin=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs.freq.output,j=d.inputs.phase.output,k=d.output,l=h.phase,m=h.sampleRate;for(b=0,c=0,e=0;a>b;b++,c+=h.strides.phase,e+=h.strides.freq)k[b]=g=Math.sin(l+j[c]),l+=i[e]/m*f.TWOPI;h.phase=l,h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){f.ugen.osc.onInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.sin",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,unscaledValue:0,value:0},strideInputs:["freq","phase"]}}),f.ugen.lfSaw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.freq.output,i=d.output,j=g.scale,k=d.inputs.phase.output[0],l=g.phase;for(b=0,c=0;a>b;b++,c+=g.strides.freq)i[b]=e=l+k,l+=h[c]*j,l>=1?l-=2:-1>=l&&(l+=2);g.phase=l,g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){var a=d.model;a.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,a.phase=0,d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=2*(1/d.options.sampleRate),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.lfSaw",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,unscaledValue:0,value:0},strideInputs:["freq"]}}),f.ugen.lfPulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs,h=d.model,i=g.freq.output,j=h.freqInc,k=g.width.output[0],l=d.output,m=h.scale,n=void 0!==h.phase?h.phase:g.phase.output[0];for(b=0,c=0;a>b;b++,c+=j)n>=1?(n-=1,l[b]=e=.5>k?1:-1):l[b]=e=k>n?1:-1,n+=i[c]*m;h.phase=n,h.unscaledValue=e,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged=function(){d.model.freqInc=d.inputs.freq.rate===f.rates.AUDIO?1:0,f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.options.sampleRate,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.lfPulse",{rate:"audio",inputs:{freq:440,phase:0,width:.5,mul:null,add:null},ugenOptions:{model:{phase:0,freqInc:1,unscaledValue:0,value:0}}}),f.ugen.impulse=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs,h=d.model,i=d.output,j=g.freq.output,k=h.strides.freq,l=g.phase.output[0],m=h.phase,n=h.scale;for(m+=l,b=0,c=0;a>b;b++,c+=k)m>=1?(m-=1,e=1):e=0,i[b]=e,m+=j[c]*n;h.phase=m-l,h.unscaledValue=e,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged=function(){d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.model.scale=1/d.model.sampleRate,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.impulse",{rate:"audio",inputs:{freq:440,phase:0,mul:null,add:null},ugenOptions:{model:{phase:0,scale:0,unscaledValue:0,value:0},strideInputs:["freq"]}}),f.ugen.t2a=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){for(var a,b=d.model,c=d.inputs.source.output[0],e=0|d.inputs.offset.output[0],f=d.output,g=0;g<f.length;g++)f[g]=a=0;c>0&&b.prevTrig<=0&&(f[e]=a=c),b.prevTrig=c,b.value=b.unscaledValue=a},d},d.defaults("flock.ugen.t2a",{rate:"audio",inputs:{source:null,offset:0},ugenOptions:{model:{prevTrig:0,unscaledValue:0,value:0}}}),f.ugen.latch=function(a,b,c){var d=f.ugen(a,b,c);return d.arGen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=i.source.output,k=i.trigger,l=h.strides.source,m=d.output;for(void 0===h.holdVal&&(h.holdVal=j[0]),b=0,c=0;a>b;b++,c+=l)e=k.output[b],m[b]=g=e>0&&h.prevTrig<=0?h.holdVal=j[c]:h.holdVal,h.prevTrig=e;h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,m)},d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.trigger.output[0];for((void 0===c.holdVal||g>0&&c.prevTrig<=0)&&(c.holdVal=d.inputs.source.output[0]),c.prevTrig=g,b=0;a>b;b++)e[b]=c.holdVal;c.unscaledValue=c.holdVal,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(){d.calculateStrides(),d.gen=d.inputs.trigger.rate===f.rates.AUDIO?d.arGen:d.krGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.latch",{rate:"audio",inputs:{source:null,trigger:0,mul:null,add:null},ugenOptions:{strideInputs:["source"],model:{prevTrig:0,unscaledValue:0,value:0}}}),f.ugen.buffer=function(a){a.onBufferInputChanged=function(b){var c=a.model,d=a.inputs;(c.bufDef!==d.buffer||"buffer"===b)&&(c.bufDef=d.buffer,f.parse.bufferForDef(c.bufDef,a,f.enviro.shared))},a.setBuffer=function(b){a.buffer=b,a.onBufferReady&&a.onBufferReady(b)},a.initBuffer=function(){a.buffer=a.model.bufDef=f.bufferDesc({format:{sampleRate:a.options.audioSettings.rates.audio},data:{channels:[new Float32Array(a.output.length)]}})}},f.ugen.playBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.defaultKrTriggerGen=function(b){var c,e,g=d.model,h=d.output,i=d.inputs.channel.output[0],j=d.buffer.data.channels[i],k=g.idx,l=d.inputs.loop.output[0],m=a.trigger.output[0];for(m>0&&g.prevTrig<=0&&(k=0),g.prevTrig=m,c=0;b>c;c++){if(k>g.lastIdx){if(!(l>0&&m>0)){h[c]=e=0;continue}k=0}e=d.interpolate(k,j),h[c]=e,k++}g.idx=k,g.unscaledValue=e,d.mulAdd(b),g.value=f.ugen.lastOutputValue(b,h)},d.otherwiseGen=function(b){var c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.channel.output[0],n=d.inputs.speed.output,o=d.buffer.data.channels[m],p=a.trigger.output,q=k.idx,r=d.inputs.loop.output[0],s=d.inputs.start.output[0]*k.lastIdx|0,t=d.inputs.end.output[0]*k.lastIdx|0;for(c=0,e=0,g=0;b>c;c++,e+=k.strides.trigger,g+=k.strides.speed){if(h=p[e],i=n[g],h>0&&k.prevTrig<=0)q=f.ugen.playBuffer.resetIndex(i,s,t);else if(s>q||q>t){if(!(r>0&&h>0)){l[c]=j=0;continue}q=f.ugen.playBuffer.resetIndex(i,s,t)}k.prevTrig=p[e],j=d.interpolate(q,o),l[c]=j,q+=k.stepSize*i}k.idx=q,k.unscaledValue=j,d.mulAdd(b),k.value=f.ugen.lastOutputValue(b,l)},d.onInputChanged=function(a){var b=d.inputs,c=b.speed,e=b.start,g=b.end,h=b.trigger;d.onBufferInputChanged(a),d.gen=c.rate===f.rates.CONSTANT&&1===c.output[0]&&e.rate===f.rates.CONSTANT&&0===e.output[0]&&g.rate===f.rates.CONSTANT&&1===g.output[0]&&h.rate!==f.rates.AUDIO?d.defaultKrTriggerGen:d.otherwiseGen,d.calculateStrides(),f.onMulAddInputChanged(d)},d.onBufferReady=function(){var a=d.model,b=d.inputs.end.output[0],c=d.inputs.channel.output[0],e=d.buffer.data.channels[c],f=e.length;a.idx=b*f|0,a.lastIdx=f-1,a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},f.ugen.playBuffer.resetIndex=function(a,b,c){return a>0?b:c},d.defaults("flock.ugen.playBuffer",{rate:"audio",inputs:{channel:0,loop:0,speed:1,start:0,end:1,trigger:1,buffer:null,mul:null,add:null},ugenOptions:{model:{finished:!1,unscaledValue:0,value:0,idx:0,stepSize:0,prevTrig:0,channel:void 0},strideInputs:["trigger","speed"],interpolation:"linear"}}),f.ugen.readBuffer=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.strides.phase,j=d.output,k=d.inputs.channel.output[0],l=d.inputs.phase.output,m=d.buffer.data.channels[k],n=m.length;for(b=e=0;a>b;b++,e+=i)c=l[e]*n,g=d.interpolate(c,m),j[b]=g;h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.readBuffer",{rate:"audio",inputs:{buffer:null,channel:0,phase:0,mul:null,add:null},ugenOptions:{model:{channel:void 0,unscaledValue:0,value:0},strideInputs:["phase"],interpolation:"linear"}}),f.ugen.bufferDuration=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs.channel.output[0],h=d.buffer.data.channels[g],i=d.buffer.format.sampleRate;for(b=0;a>b;b++)e[b]=h.length/i;c.unscaledValue=c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferDuration",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{unscaledValue:0,value:0}}}),f.ugen.bufferLength=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,f=d.inputs.channel.output[0],g=d.buffer.data.channels[f],h=g.length;for(b=0;a>b;b++)e[b]=h;c.value=c.unscaledValue=h},d.onInputChanged=function(a){d.onBufferInputChanged(a)},d.onBufferReady=function(){d.krGen(1)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferLength",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{unscaledValue:0,value:0}}}),f.ugen.bufferPhaseStep=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=c.unscaledValue;for(b=0;a>b;b++)e[b]=g;d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){d.onBufferInputChanged(a),f.onMulAddInputChanged(d)},d.onBufferReady=function(a){var b=d.model,c=d.inputs.channel.output[0],e=a.data.channels[c],f=d.options.audioSettings.rates.audio,g=d.buffer.format.sampleRate||f;b.scale=g/f,d.output[0]=b.unscaledValue=1/(e.length*b.scale)},d.init=function(){var a=d.rate;d.gen=a===f.rates.CONTROL||a===f.rates.AUDIO?d.krGen:void 0,d.output[0]=0,f.ugen.buffer(d),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.bufferPhaseStep",{rate:"constant",inputs:{buffer:null,channel:0},ugenOptions:{model:{scale:1,unscaledValue:0,value:0}}}),f.ugen.sampleRate=function(a,b,c){var d=f.ugen(a,b,c),e=d.model;return d.output[0]=e.value=e.unscaledValue=d.options.audioSettings.rates.audio,d},d.defaults("flock.ugen.sampleRate",{rate:"constant",inputs:{}}),f.ugen.dust=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(b){var c,e,g,h,i,j=d.model,k=d.output,l=a.density.output[0];for(l!==j.density?(j.density=l,c=j.threshold=l*j.sampleDur,e=j.scale=c>0?1/c:0):(c=j.threshold,e=j.scale),i=0;b>i;i++)g=Math.random(),h=c>g?g*e:0,k[i]=h;j.unscaledValue=h,d.mulAdd(b),j.value=f.ugen.lastOutputValue(b,k)},d.onInputChanged(),d},d.defaults("flock.ugen.dust",{rate:"audio",inputs:{density:1,mul:null,add:null},ugenOptions:{model:{density:0,scale:0,threshold:0,unscaledValue:0,value:0}}}),f.ugen.whiteNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output;for(b=0;a>b;b++)g[b]=c=Math.random();e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.onInputChanged(),d},d.defaults("flock.ugen.whiteNoise",{rate:"audio",inputs:{mul:null,add:null}}),f.ugen.pinkNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.state,j=d.a,k=d.p,l=h.offset,m=d.output;for(b=0;a>b;b++){for(g=0,c=0;c<i.length;c++)e=Math.random(),i[c]=k[c]*(i[c]-e)+e,g+=j[c]*i[c];g=2*g-l,m[b]=g}h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,m)},d.init=function(){d.a=new Float32Array(d.options.coeffs.a),d.p=new Float32Array(d.options.coeffs.p),d.model.state=new Float32Array(d.a.length);for(var a=0;a<d.a.length;a++)d.model.offset+=d.a[a];d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.pinkNoise",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{model:{state:0,unscaledValue:0,value:0,offset:0},coeffs:{a:[.02109238,.07113478,.68873558],p:[.319,.7756,.9613]}}}),f.ugen.lfNoise=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(b){var c,e,g=d.model,h=a.freq.output[0],i=b,j=d.output,k=0;h=h>.001?h:.001;do for(g.counter<=0&&(g.counter=g.sampleRate/h,
g.counter=g.counter>1?g.counter:1,"linear"===d.options.interpolation?(g.start=g.unscaledValue=g.end,g.end=Math.random(),g.ramp=g.ramp=(g.end-g.start)/g.counter):(g.start=g.unscaledValue=Math.random(),g.ramp=0)),c=i<g.counter?i:g.counter,i-=c,g.counter-=c,e=0;c>e;e++)j[k]=g.unscaledValue,g.unscaledValue+=g.ramp,k++;while(i);d.mulAdd(b),g.value=f.ugen.lastOutputValue(b,j)},d.input=function(){d.model.end=Math.random(),d.onInputChanged()},d.input(),d},d.defaults("flock.ugen.lfNoise",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{counter:0,level:0,unscaledValue:0,value:0}}}),f.ugen.random=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.generator,h=d.output;for(b=0;a>b;b++)h[b]=c=g.uniform(-1,1);e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(a){"seed"===a&&d.initGenerator(),f.onMulAddInputChanged(d)},d.initGenerator=function(){var a=d.inputs.seed;d.generator=a?new e(a):new e},d.init=function(){d.initGenerator(),d.calculateStrides(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.random",{rate:"audio",inputs:{seed:null,mul:null,add:null}}),f.ugen.random.exponential=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.inputs.lambda.output,k=d.model.strides.lambda;for(b=c=0;a>b;b++,c+=k)i[b]=e=h.exponential(j[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},d.defaults("flock.ugen.random.exponential",{rate:"audio",inputs:{seed:null,lambda:1,mul:null,add:null},ugenOptions:{strideInputs:["lambda"]}}),f.ugen.random.gamma=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=d.generator,k=d.output,l=h.strides.alpha,m=i.alpha.output,n=h.strides.beta,o=i.beta.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)k[b]=g=j.gamma(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d},d.defaults("flock.ugen.random.gamma",{rate:"audio",inputs:{seed:null,alpha:1,beta:2,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),f.ugen.random.normal=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=d.inputs,k=d.generator,l=h.strides.mu,m=j.mu.output,n=h.strides.sigma,o=j.sigma.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)i[b]=g=k.normal(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,i)},d},d.defaults("flock.ugen.random.normal",{rate:"audio",inputs:{seed:null,mu:0,sigma:1,mul:null,add:null},ugenOptions:{strideInputs:["mu","sigma"]}}),f.ugen.random.pareto=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.model.strides.alpha,k=d.inputs.alpha.output;for(b=c=0;a>b;b++,c+=j)i[b]=e=h.pareto(k[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},d.defaults("flock.ugen.random.pareto",{rate:"audio",inputs:{seed:null,alpha:5,mul:null,add:null},ugenOptions:{strideInputs:["alpha"]}}),f.ugen.random.triangular=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.generator,i=d.output,j=d.model.strides.mode,k=d.inputs.mode.output;for(b=c=0;a>b;b++,c+=j)i[b]=e=h.triangular(-1,1,k[c]);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d},d.defaults("flock.ugen.random.triangular",{rate:"audio",inputs:{seed:null,mode:.5,mul:null,add:null},ugenOptions:{strideInputs:["mode"]}}),f.ugen.random.weibull=function(a,b,c){var d=f.ugen.random(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.inputs,j=d.generator,k=d.output,l=h.strides.alpha,m=i.alpha.output,n=h.strides.beta,o=i.beta.output;for(b=c=e=0;a>b;b++,c+=l,e+=n)k[b]=g=j.weibull(m[c],o[e]);h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d},d.defaults("flock.ugen.random.weibull",{rate:"audio",inputs:{seed:null,alpha:1,beta:1,mul:null,add:null},ugenOptions:{strideInputs:["alpha","beta"]}}),f.ugen.phasor=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs,i=d.output,j=h.step.output,k=h.trigger.output;for(void 0===g.unscaledValue&&(g.unscaledValue=h.start.output[0]),b=0,c=0,e=0;a>b;b++,c+=g.strides.trigger,e+=g.strides.step)k[c]>0&&g.prevTrig<=0&&(g.unscaledValue=h.reset.output[0]),g.prevTrig=k[c],g.unscaledValue>=h.end.output[0]&&(g.unscaledValue=h.start.output[0]),i[b]=g.unscaledValue,g.unscaledValue+=j[e];d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged(),d},d.defaults("flock.ugen.phasor",{rate:"control",inputs:{start:0,end:1,reset:0,step:.1,trigger:0,mul:null,add:null},ugenOptions:{model:{unscaledValue:void 0,value:0},strideInputs:["trigger","step"]}}),f.ugen.amplitude=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.inputs.source.output,i=d.output,j=g.attackTime,k=d.inputs.attack.output[0],l=g.releaseTime,m=d.inputs.release.output[0],n=g.prevVal,o=g.attackCoef,p=g.releaseCoef;for(k!==j&&(g.attackTime=k,o=g.attackCoef=0===k?0:Math.exp(f.LOG01/(k*g.sampleRate))),m!==l&&(g.releaseTime=m,p=g.releaseCoef=0===m?0:Math.exp(f.LOG01/(m*g.sampleRate))),b=0;a>b;b++)c=Math.abs(h[b]),e=n>c?p:o,i[b]=n=c+(n-c)*e;g.unscaledValue=g.prevVal=n,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.onInputChanged(),d},d.defaults("flock.ugen.amplitude",{rate:"audio",inputs:{source:null,attack:.01,release:.01,mul:null,add:null},ugenOptions:{model:{prevVal:0,unscaledValue:0,value:0}}}),f.ugen.normalize=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(){var a=d.model,b=d.output,c=d.inputs.max.output[0],e=d.inputs.source.output;f.normalize(e,c,b),a.value=a.unscaledValue=b[b.length-1]},d.onInputChanged(),d},d.defaults("flock.ugen.normalize",{rate:"audio",inputs:{max:1,source:null}}),f.ugen.gate=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=h.strides,j=d.output,k=d.inputs,l=k.source.output,m=k.sideChain.output,n=i.sideChain,o=k.threshold.output,p=i.threshold,q=d.options.holdLastValue,r=h.lastValue;for(b=c=e=0;a>b;b++,c+=n,e+=p)m[c]>=o[e]?j[b]=g=r=l[b]:j[b]=g=q?r:0;h.lastValue=r,h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged=function(){d.inputs.sideChain||(d.inputs.sideChain=d.inputs.source),f.onMulAddInputChanged(d),d.calculateStrides()},d.onInputChanged(),d},d.defaults("flock.ugen.gate",{rate:"audio",inputs:{source:null,sideChain:null,threshold:Number.MIN_VALUE,mul:null,add:null},ugenOptions:{model:{unscaledValue:0,value:0,lastValue:0},holdLastValue:!1,strideInputs:["sideChain","threshold"]}}),f.ugen.pan2=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h=d.model,i=d.output,j=i[0],k=i[1],l=d.inputs,m=l.source.output,n=l.pan.output;for(b=0,c=0;a>b;b++,c+=h.strides.pan)e=m[b],g=.5*n[c]+.5,k[b]=e*Math.sin(g*f.HALFPI),j[b]=e*Math.cos(g*f.HALFPI);var o=a-1;h.value[0]=i[0][o],h.value[1]=i[1][o]},d.init=function(){d.onInputChanged(),d.model.unscaledValue=d.model.value},d.init(),d},d.defaults("flock.ugen.pan2",{rate:"audio",inputs:{source:null,pan:0},ugenOptions:{model:{unscaledValue:[0,0],value:[0,0]},tags:["flock.ugen.multiChannelOutput"],strideInputs:["pan"],numOutputs:2}}),f.ugen.out=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l,m=d.model,n=d.multiInputs.sources,o=d.options.audioSettings.buses,p=d.inputs.bus.output[0],q=d.inputs.expand.output[0];if(b=n.length,c=Math.max(q,b),!(1>b)){for(e=0;c>e;e++)for(h=n[e%b],i=h.rate,j=o[p+e],k=i===f.rates.AUDIO?1:0,l=0,g=0;a>g;g++,l+=k)j[g]=j[g]+h.output[l];m.value=m.unscaledValue=h.output[l],d.mulAdd(a)}},d.init=function(){d.sourceBuffers=[],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.out",{rate:"audio",inputs:{sources:null,bus:0,expand:2},ugenOptions:{tags:["flock.ugen.outputType"],multiInputNames:["sources"]}}),f.ugen.valueOut=function(a,b,c){var d=f.ugen(a,b,c);return d.arraySourceGen=function(){var a,b=d.model,c=d.inputs.sources;for(a=0;a<c.length;a++)b.value[a]=c[a].output[0]},d.ugenSourceGen=function(){d.model.value=d.model.unscaledValue=d.inputs.sources.output[0]},d.onInputChanged=function(){var a=d.model,b=d.inputs.sources;f.isIterable(b)?(d.gen=d.arraySourceGen,a.value=new Float32Array(b.length),a.unscaledValue=a.value):d.gen=d.ugenSourceGen},d.onInputChanged(),d},d.defaults("flock.ugen.valueOut",{rate:"control",inputs:{sources:null},ugenOptions:{model:{unscaledValue:null,value:null},tags:["flock.ugen.outputType","flock.ugen.valueType"]}}),f.ugen["in"]=function(a,b,c){var d=f.ugen(a,b,c);return d.singleBusGen=function(a){var b=d.model,c=d.output;f.ugen["in"].readBus(a,c,d.inputs.bus,d.options.audioSettings.buses),b.unscaledValue=f.ugen.lastOutputValue(a,c),d.mulAdd(a),b.value=f.ugen.lastOutputValue(a,c)},d.multiBusGen=function(a){var b,c,e,g,h=d.model,i=d.inputs.bus,j=d.options.audioSettings.buses,k=d.output;for(b=0;a>b;b++){for(g=0,c=0;c<i.length;c++)e=0|i[c].output[0],g+=j[e][b];k[b]=g}h.unscaledValue=g,d.mulAdd(a),h.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){d.gen=f.isIterable(d.inputs.bus)?d.multiBusGen:d.singleBusGen,f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugen["in"].readBus=function(a,b,c,d){var e,f=0|c.output[0],g=d[f];for(e=0;a>e;e++)b[e]=g[e]},d.defaults("flock.ugen.in",{rate:"audio",inputs:{bus:0,mul:null,add:null}}),f.ugen.audioIn=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=d.bus;for(b=0;a>b;b++)g[b]=c=h[b];e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.init=function(){var a=f.enviro.shared.audioStrategy.inputDeviceManager.openAudioDevice(c);d.bus=d.options.audioSettings.buses[a],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.audioIn",{rate:"audio",inputs:{mul:null,add:null}}),f.ugen.filter=function(a,b,d){var e=f.ugen(a,b,d);return e.gen=function(){var a=e.model,b=e.output,c=e.inputs,d=c.q.output[0],f=c.freq.output[0];(a.prevFreq!==f||a.prevQ!==d)&&e.updateCoefficients(a,f,d),e.filterEngine.filter(b,e.inputs.source.output),a.prevQ=d,a.prevFreq=f,a.value=a.unscaledValue=b[b.length-1]},e.init=function(){var a=e.options.recipe,b="string"==typeof a?f.get(a):a;if(!b)throw new Error("Can't instantiate a flock.ugen.filter() without specifying a filter coefficient recipe.");e.filterEngine=new c(b.sizes.b,b.sizes.a),e.model.coeffs={a:e.filterEngine.a,b:e.filterEngine.b},e.updateCoefficients=f.get(b,e.options.type),e.onInputChanged()},e.init(),e},d.defaults("flock.ugen.filter",{rate:"audio",inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=e.coeffs,j=g.freq.output[0],k=g.q.output[0],l=g.source.output;for((e.prevFreq!==j||e.prevQ!==k)&&d.updateCoefficients(e,j,k),b=0;a>b;b++)c=l[b]-i.a[0]*e.d0-i.a[1]*e.d1,h[b]=i.b[0]*c+i.b[1]*e.d0+i.b[2]*e.d1,e.d1=e.d0,e.d0=c;e.prevQ=k,e.prevFreq=j,e.value=e.unscaledValue=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(){var a=d.options.type;d.updateCoefficients="string"==typeof a?f.get(a):a},d.init=function(){d.model.d0=0,d.model.d1=0,d.model.coeffs={a:new Float32Array(2),b:new Float32Array(3)},d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.filter.biquad",{inputs:{freq:440,q:1,source:null}}),f.ugen.filter.biquad.types={hp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.highPass"}},rhp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.highPass"}},lp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.lowPass"}},rlp:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.rbj.lowPass"}},bp:{inputDefaults:{freq:440,q:4},options:{type:"flock.coefficients.butterworth.bandPass"}},br:{inputDefaults:{freq:440,q:1},options:{type:"flock.coefficients.butterworth.bandReject"}}},f.aliasUGens("flock.ugen.filter.biquad",f.ugen.filter.biquad.types),f.coefficients={butterworth:{sizes:{a:2,b:3},lowPass:function(a,b){var c=a.coeffs,d=1/Math.tan(Math.PI*b/a.sampleRate),e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=2*h,c.b[2]=h,c.a[0]=2*(1-e)*h,c.a[1]=(1-g+e)*h},highPass:function(a,b){var c=a.coeffs,d=Math.tan(Math.PI*b/a.sampleRate);d===1/0&&(d=0);var e=d*d,g=f.ROOT2*d,h=1/(1+g+e);c.b[0]=h,c.b[1]=-2*h,c.b[2]=h,c.a[0]=2*(e-1)*h,c.a[1]=(1-g+e)*h},bandPass:function(a,b,c){var d=a.coeffs,e=b/c,g=1/Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g);d.b[0]=i,d.b[1]=0,d.b[2]=-i,d.a[0]=-(g*h*i),d.a[1]=i*(g-1)},bandReject:function(a,b,c){var d=a.coeffs,e=b/c,g=Math.tan(Math.PI*e/a.sampleRate),h=2*Math.cos(f.TWOPI*b/a.sampleRate),i=1/(1+g),j=-h*i;d.b[0]=i,d.b[1]=j,d.b[2]=i,d.a[0]=j,d.a[1]=(1-g)*i}},rbj:{sizes:{a:2,b:3},lowPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1-g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},highPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+g,k=1+i,l=j/2/k;d.b[0]=l,d.b[1]=-j/k,d.b[2]=l,d.a[0]=-2*g/k,d.a[1]=(1-i)/k},bandPass:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=c*i;d.b[0]=k/j,d.b[1]=0,d.b[2]=-k/j,d.a[0]=-2*g/j,d.a[1]=(1-i)/j},bandReject:function(a,b,c){var d=a.coeffs,e=f.TWOPI*b/a.sampleRate,g=Math.cos(e),h=Math.sin(e),i=h/(2*c),j=1+i,k=1/j,l=-2*g/j;d.b[0]=k,d.b[1]=l,d.b[2]=k,d.a[0]=l,d.a[1]=(1-i)/j}}},f.ugen.filter.moog=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.inputs,m=d.output,n=l.source.output,o=k.strides.source,p=l.resonance.output,q=k.strides.resonance,r=l.cutoff.output,s=k.strides.cutoff,t=k.f,u=k.fSq,v=k.fSqSq,w=k.oneMinusF,x=k.fb;for(b=c=e=g=0;a>b;b++,c+=o,e+=q,g+=s)h=r[g],i=p[e],h!==k.prevCutoff&&(h>k.nyquistRate&&(h=k.nyquistRate),t=k.f=h/k.nyquistRate*1.16,u=k.fSq=t*t,v=k.fSqSq=u*u,w=k.oneMinusF=1-t,k.prevRes=void 0),i!==k.prevRes&&(i>4?i=4:0>i&&(i=0),x=k.fb=i*(1-.15*u)),j=n[c]-k.out4*x,j*=.35013*v,k.out1=j+.3*k.in1+w*k.out1,k.in1=j,k.out2=k.out1+.3*k.in2+w*k.out2,k.in2=k.out1,k.out3=k.out2+.3*k.in3+w*k.out3,k.in3=k.out2,k.out4=k.out3+.3*k.in4+w*k.out4,k.in4=k.out3,m[b]=k.out4;k.unscaledValue=k.out4,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged(),d},d.defaults("flock.ugen.filter.moog",{rate:"audio",inputs:{cutoff:3e3,resonance:3.99,source:null},ugenOptions:{model:{in1:0,in2:0,in3:0,in4:0,out1:0,out2:0,out3:0,out4:0,prevCutoff:void 0,prevResonance:void 0,f:void 0,fSq:void 0,fSqSq:void 0,oneMinusF:void 0,fb:void 0,unscaledValue:0,value:0},strideInputs:["source","cutoff","resonance"]}}),f.ugen.delay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=g.time.output[0],k=d.delayBuffer;for(j!==e.time&&(e.time=j,e.delaySamps=j*d.model.sampleRate),b=0;a>b;b++)e.pos>=e.delaySamps&&(e.pos=0),h[b]=c=k[e.pos],k[e.pos]=i[b],e.pos++;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(a){if(f.onMulAddInputChanged(d),!a||"maxTime"===a){var b=d.model.sampleRate*d.inputs.maxTime.output[0];d.delayBuffer=new Float32Array(b)}},d.onInputChanged(),d},d.defaults("flock.ugen.delay",{rate:"audio",inputs:{maxTime:1,time:1,source:null},ugenOptions:{model:{pos:0,unscaledValue:0,value:0}}}),f.ugen.delay1=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=e.prevVal;for(b=0;a>b;b++)h[b]=c=j,j=i[b];e.prevVal=j,e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged=function(){f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.delay1",{rate:"audio",inputs:{source:null},ugenOptions:{model:{prevVal:0,unscaledValue:0,value:0}}}),f.ugen.freeverb=function(a,b,c){var d=f.ugen(a,b,c);return d.tunings=d.options.tunings,d.allpassTunings=d.options.allpassTunings,d.gen=function(a){var b,c,e,g=d.model,h=d.inputs,i=d.output,j=h.source.output,k=h.mix.output[0],l=1-k,m=h.room.output[0],n=.28*m+.7,o=h.damp.output[0],p=.4*o,q=1-p;for(b=0;a>b;b++){var r=j[b],s=.015*r;for(c=0;c<d.buffers_a.length;c++)++d.bufferindices_a[c]===d.allpassTunings[c]&&(d.bufferindices_a[c]=0),d.readsamp_a[c]=d.buffers_a[c][d.bufferindices_a[c]];for(c=0;c<d.buffers_c.length;c++){++d.bufferindices_c[c]===d.tunings[c]&&(d.bufferindices_c[c]=0);var t=d.bufferindices_c[c],u=d.buffers_c[c][t];d.filterx_c[c]=q*d.filtery_c[c]+p*d.filterx_c[c],d.buffers_c[c][t]=s+n*d.filterx_c[c],d.filtery_c[c]=u}var v=d.filtery_c[6]+d.filtery_c[7];d.buffers_a[3][d.bufferindices_a[3]]=.5*d.filterx_a[3]+d.filtery_c[0]+(d.filtery_c[1]+d.filtery_c[2])+(d.filtery_c[3]+d.filtery_c[4]+(d.filtery_c[5]+v)),d.filterx_a[3]=d.readsamp_a[3],d.filtery_a[3]=d.filterx_a[3]-(d.filtery_c[0]+d.filtery_c[1]+(d.filtery_c[2]+d.filtery_c[3])+(d.filtery_c[4]+d.filtery_c[5]+v)),d.buffers_a[2][d.bufferindices_a[2]]=.5*d.filterx_a[2]+d.filtery_a[3],d.filterx_a[2]=d.readsamp_a[2],d.filtery_a[2]=d.filterx_a[2]-d.filtery_a[3],d.buffers_a[1][d.bufferindices_a[1]]=.5*d.filterx_a[1]+d.filtery_a[2],d.filterx_a[1]=d.readsamp_a[1],d.filtery_a[1]=d.filterx_a[1]-d.filtery_a[2],d.buffers_a[0][d.bufferindices_a[0]]=.5*d.filterx_a[0]+d.filtery_a[1],d.filterx_a[0]=d.readsamp_a[0],d.filtery_a[0]=d.filterx_a[0]-d.filtery_a[1],e=l*r+k*d.filtery_a[0],i[b]=e}g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,i)},d.initDelayLines=function(){d.buffers_c=new Array(8),d.bufferindices_c=new Int32Array(8),d.filterx_c=new Float32Array(8),d.filtery_c=new Float32Array(8);var a,b,c=d.model.spread;for(a=0;a<d.buffers_c.length;a++)for(d.buffers_c[a]=new Float32Array(d.tunings[a]+c),d.bufferindices_c[a]=0,d.filterx_c[a]=0,d.filtery_c[a]=0,b=0;b<d.tunings[a]+c;b++)d.buffers_c[a][b]=0;for(d.buffers_a=new Array(4),d.bufferindices_a=new Int32Array(4),d.filterx_a=new Float32Array(4),d.filtery_a=new Float32Array(4),d.readsamp_a=new Float32Array(4),a=0;a<d.buffers_a.length;a++){for(d.bufferindices_a[a]=0,d.filterx_a[a]=0,d.filtery_a[a]=0,d.readsamp_a[a]=0,b=0;b<d.allpassTunings.length;b++)d.allpassTunings[b]+=c;for(d.buffers_a[a]=new Float32Array(d.allpassTunings[a]),b=0;b<d.allpassTunings[a];b++)d.buffers_a[a][b]=0}},d.init=function(){d.initDelayLines(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.freeverb",{rate:"audio",inputs:{source:null,mix:.33,room:.5,damp:.5},ugenOptions:{model:{spread:0,unscaledValue:0,value:0},tunings:[1116,1188,1277,1356,1422,1491,1557,1617],allpassTunings:[556,441,341,225]}}),f.ugen.distortion=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i=d.model,j=d.output,k=d.inputs.source.output,l=i.strides.source,m=d.inputs.gain.output,n=i.strides.gain;for(e=g=h=0;a>e;e++,g+=l,h+=n)b=k[g]*m[h],c=1.5*b-.5*b*b*b,j[e]=c;i.unscaledValue=c,d.mulAdd(a),i.value=f.ugen.lastOutputValue(a,j)},d.onInputChanged(),d},d.defaults("flock.ugen.distortion",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),f.ugen.distortion.deJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.amount.output,p=k.strides.amount;for(h=i=j=0;a>h;h++,i+=n,j+=p)b=m[i],c=o[j],e=Math.abs(b),g=b*(e+c)/(b*b+(c-1)*e+1),l[h]=g;k.unscaledValue=g,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.deJonge",{rate:"audio",inputs:{source:null,amount:2},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.tarrabiaDeJonge=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.output,m=d.inputs.source.output,n=k.strides.source,o=d.inputs.amount.output,p=k.strides.amount;for(g=h=i=0;a>g;g++,h+=n,i+=p)b=m[h],c=o[i],c>=1?c=.9999999999999999:-1>c&&(c=-1),j=2*c/(1-c),e=(1+j)*b/(1+j*Math.abs(b)),l[g]=e;k.unscaledValue=e,d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,l)},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.tarrabiaDeJonge",{rate:"audio",inputs:{source:null,amount:10},ugenOptions:{strideInputs:["source","amount"]}}),f.ugen.distortion.gloubiBoulga=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l=d.model,m=d.output,n=d.inputs.source.output,o=l.strides.source,p=d.inputs.gain.output,q=l.strides.gain;for(e=g=h=0;a>e;e++,g+=o,h+=q)b=n[g]*p[h],i=.686306*b,j=1+Math.exp(Math.sqrt(Math.abs(i))*-.75),k=Math.exp(i),c=(k-Math.exp(-i*j))/(k+Math.exp(-i)),m[e]=c;l.unscaledValue=c,d.mulAdd(a),l.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged(),d},d.defaults("flock.ugen.distortion.gloubiBoulga",{rate:"audio",inputs:{source:null,gain:1},ugenOptions:{strideInputs:["source","gain"]}}),f.ugen.decay=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.inputs,h=d.output,i=g.source.output,j=g.time.output[0];if(j!==e.time&&(e.time=j,e.coeff=0===j?0:Math.exp(f.LOG001/(j*d.model.sampleRate))),0===e.coeff)for(b=0;a>b;b++)h[b]=c=i[b];else for(b=0;a>b;b++)e.lastSamp=i[b]+e.coeff*e.lastSamp,h[b]=c=e.lastSamp;e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,h)},d.onInputChanged(),d},d.defaults("flock.ugen.decay",{rate:"audio",inputs:{source:null,time:1},ugenOptions:{model:{time:0,lastSamp:0,coeff:0,value:0}}}),f.ugen.triggerGrains=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k=d.model,l=d.inputs,m=d.output,n=l.channel.output[0],o=d.buffer.data.channels[n],p=d.buffer.format.sampleRate,q=l.dur.output[0],r=l.amp.output,s=l.centerPos.output,t=l.trigger.output,u=l.speed.output,v=d.options.grainEnv,w=a-1,x=0,y=0,z=0,A=0;for(b=0;a>b;b++){if(t[y]>0&&k.prevTrigger<=0&&k.activeGrains.length<k.maxNumGrains){for(g=k.freeGrains.pop(),g.numSamps=k.sampleRate*q,g.centerIdx=g.numSamps/2*k.stepSize,g.envScale=d.options.grainEnv.length/g.numSamps,g.sampIdx=0,g.amp=r[z],h=s[x]*p-g.centerIdx;0>h;)h+=o.length;g.readPos=h,g.writePos=b,g.speed=u[A],k.activeGrains.push(g)}k.prevTrigger=t[y],m[b]=0,x+=k.strides.centerPos,y+=k.strides.trigger,z+=k.strides.amp,A+=k.strides.speed}for(c=0;c<k.activeGrains.length;){for(g=k.activeGrains[c],e=g.writePos;e<Math.min(e+(g.numSamps-g.sampIdx),a);e++)i=d.interpolate(g.readPos,o),j=f.interpolate.linear(g.sampIdx*g.envScale,v),m[e]+=i*j*g.amp,g.readPos=(g.readPos+k.stepSize*g.speed)%o.length,g.sampIdx++;g.sampIdx>=g.numSamps?(k.freeGrains.push(g),k.activeGrains.splice(c,1)):(c++,g.writePos=e%a)}k.unscaledValue=m[w],d.mulAdd(a),k.value=m[w]},d.onBufferReady=function(){var a=d.model;a.stepSize=d.buffer.format.sampleRate/a.sampleRate},d.onInputChanged=function(a){d.onBufferInputChanged(a),d.calculateStrides(),f.onMulAddInputChanged(d)},d.allocateGrains=function(a){a=a||d.model.maxNumGrains;for(var b=0;a>b;b++)d.model.freeGrains.push({numSamps:0,centerIdx:0,envScale:0,sampIdx:0,amp:0,readPos:0,writePos:0,speed:0})},d.init=function(){f.ugen.buffer(d),d.allocateGrains(),d.initBuffer(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.triggerGrains",{rate:"audio",inputs:{centerPos:0,channel:0,amp:1,dur:.1,speed:1,trigger:0,buffer:null,mul:null,add:null},ugenOptions:{grainEnv:f.fillTable(8192,f.tableGenerators.hann),model:{unscaledValue:0,value:0,maxNumGrains:512,activeGrains:[],freeGrains:[],env:null,strides:{}},strideInputs:["centerPos","trigger","amp","speed"],interpolation:"cubic"}}),f.ugen.granulator=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g,h,i,j,k,l=d.model,m=d.options,n=d.inputs,o=d.output,p=d.delayLine,q=n.grainDur.output[0],r=n.delayDur.output[0],s=n.numGrains.output[0],t=n.source.output,u=m.maxDelayDur,v=m.grainEnv;for(l.delayDur!==r&&(l.delayDur=r,r>u&&(r=u),l.delayLength=r*l.sampleRate|0,l.writePos=l.writePos%l.delayLength),l.grainDur!==q&&(l.grainDur=q,l.grainLength=l.sampleRate*l.grainDur|0,l.envScale=v.length/l.grainLength),s=s>m.maxNumGrains?m.maxNumGrains:Math.round(s),b=0;a>b;b++){for(p[l.writePos]=t[b],l.writePos=++l.writePos%l.delayLength,e=0,c=0;s>c;c++)g=l.grainIdx[c],h=l.delayLineIdx[c],g>l.grainLength&&(g=0,h=Math.random()*l.delayLength|0),i=p[h],j=g*l.envScale,k=f.interpolate.linear(j,v),e+=i*k,l.delayLineIdx[c]=++h%l.delayLength,l.grainIdx[c]=++g;e/=s,o[b]=e}l.unscaledValue=e,d.mulAdd(a),l.value=f.ugen.lastOutputValue(a,o)},d.initGrains=function(){for(var a=d.model,b=0;b<d.options.maxNumGrains;b++)a.grainIdx[b]=0,a.delayLineIdx[b]=Math.random()*a.delayLength},d.init=function(){var a=d.model,b=d.options,c=b.maxDelayDur*a.sampleRate|0;d.delayLine=new Float32Array(c),a.delayLength=c,a.delayLineIdx=new Uint32Array(b.maxNumGrains),a.grainIdx=new Uint32Array(b.maxNumGrains),d.initGrains(),d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.granulator",{rate:"audio",inputs:{source:null,grainDur:.1,delayDur:1,numGrains:5,mul:null,add:null},ugenOptions:{maxNumGrains:512,maxDelayDur:30,grainEnv:f.fillTable(8192,f.tableGenerators.sinWindow),model:{unscaledValue:0,value:0,grainLength:0,writePos:0}}}),f.ugen.print=function(a,b,c){var e=f.ugen(a,b,c);return e.gen=function(a){var b,c,f,g=e.inputs,h=e.output,i=e.model,j=i.label,k=g.channel,l=k?g.source.output[k.output[0]]:g.source.output,m=g.trigger.output[0],n=g.freq.output[0];for(m>0&&i.prevTrig<=0&&d.log(d.logLevel.IMPORTANT,j+l),i.freq!==n&&(i.sampInterval=Math.round(i.sampleRate/n),i.freq=n,i.counter=i.sampInterval),b=0,c=0;a>b;b++,c+=i.strides.source)i.counter>=i.sampInterval&&(d.log(d.logLevel.IMPORTANT,j+l[c]),i.counter=0),i.counter++,h[b]=f=l[b];i.value=i.unscaledValue=f},e.init=function(){var a=e.options;e.model.label=a.label?a.label+": ":"",e.onInputChanged()},e.init(),e},d.defaults("flock.ugen.print",{rate:"audio",inputs:{source:null,trigger:0,freq:1},ugenOptions:{model:{unscaledValue:0,value:0,counter:0},strideInputs:["source"]}}),f.ugen.sequence=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.inputs.list,h=d.inputs,i=h.freq.output,j=h.loop.output[0],k=d.model,l=k.scale,m=d.output,n=h.start?Math.round(h.start.output[0]):0,o=h.end?Math.round(h.end.output[0]):g.length;for(void 0===k.unscaledValue&&(b=g[n],k.unscaledValue=void 0===b?0:b),void 0===k.nextIdx&&(k.nextIdx=n),c=0,e=0;a>c;c++,e+=k.strides.freq){if(k.nextIdx>=o){if(!(j>0)){m[c]=k.unscaledValue;continue}k.nextIdx=n}m[c]=k.unscaledValue=g[k.nextIdx],k.phase+=i[e]*l,k.phase>=1&&(k.phase=0,k.nextIdx++)}d.mulAdd(a),k.value=f.ugen.lastOutputValue(a,m)},d.onInputChanged=function(){d.model.scale=d.rate!==f.rates.DEMAND?d.model.sampleDur:1,d.inputs.list||(d.inputs.list=[]),d.calculateStrides(),f.onMulAddInputChanged(d)},d.init=function(){d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.sequence",{rate:"control",inputs:{start:0,freq:1,loop:0,list:[]},ugenOptions:{model:{unscaledValue:void 0,value:0,phase:0},strideInputs:["freq"]}}),f.ugen.midiFreq=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=g.a4,i=h.freq,j=h.noteNum,k=g.notesPerOctave,l=d.inputs.source.output,m=d.output;for(b=0,c=0;a>b;b++,c+=g.strides.source)m[b]=e=f.midiFreq(l[c],i,j,k);g.unscaledValue=e,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,m)},d.init=function(){d.model.octaveScale=1/d.model.notesPerOctave,d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.midiFreq",{rate:"control",inputs:{source:null},ugenOptions:{model:{unscaledValue:0,value:0,a4:{noteNum:69,freq:440},notesPerOctave:12},strideInputs:["source"]}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";f.blit=function(a){var b,c;return a>=2?b=0:a>=1?(c=2-a,b=.16666666666666666*c*c*c):a>=0?(c=a*a,b=.6666666666666666-c+.5*c*a):a>=-1?(c=a*a,b=.6666666666666666-c-.5*c*a):a>=-2?(c=2+a,b=.16666666666666666*c*c*c):b=0,b},f.blit.period=function(a,b){var c=a/b;return 1>c?1:c},f.blit.updatePeriodState=function(a,b){a.freq=1e-6>b?1e-6:b,a.d0=f.blit.period(a.sampleRate,a.freq)},f.ugen.blit=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=d.inputs.freq.output[0],i=e.phase;for(b=0;a>b;b++)i-=1,-2>i&&(f.blit.updatePeriodState(e,h),i+=e.d0),c=f.blit(i),g[b]=c;e.phase=i,e.unscaledValue=c,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.init=function(){d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.blit",{rate:"audio",inputs:{freq:440,mul:null,add:null},ugenOptions:{model:{phase:-2,unscaledValue:0,value:0}}}),f.ugen.saw=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.unscaledValue;for(void 0===i&&(f.ugen.saw.updatePeriodState(c,g),i=c.d0/2),b=0;a>b;b++)i-=1,-2>i&&(f.ugen.saw.updatePeriodState(c,g),i+=c.d0),e[b]=j=f.blit(i)-c.dcOffset+h*j;c.phase=i,c.unscaledValue=j,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.saw.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.dcOffset=1/a.d0},d.defaults("flock.ugen.saw",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,dcOffset:void 0,unscaledValue:0,value:0}}}),f.ugen.square=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.output,g=d.inputs.freq.output[0],h=1-d.inputs.leakRate.output[0],i=c.phase,j=c.unscaledValue;for(void 0===i&&(f.ugen.square.updatePeriodState(c,g),i=c.phaseResetValue),b=0;a>b;b++)e[b]=j=f.blit(i)*c.sign+h*j,-2>i&&(f.ugen.square.updatePeriodState(c,g),i+=c.phaseResetValue),i-=1;c.phase=i,c.unscaledValue=j,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.square.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.sign*=-1},d.defaults("flock.ugen.square",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,unscaledValue:.5,value:.5,sign:1}}}),f.ugen.tri=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e,g=d.model,h=d.output,i=d.inputs.freq.output[0],j=1-d.inputs.leakRate.output[0],k=g.phase,l=g.unscaledValue,m=g.secondPrevVal;for(void 0===k&&(f.ugen.tri.updatePeriodState(g,i),k=g.d0/4),b=0;a>b;b++)c=f.blit(k)*g.sign+j*l,l=c,e=c+j*m,m=e,h[b]=e*g.ampScale,k-=1,-2>k&&(f.ugen.tri.updatePeriodState(g,i),k+=g.phaseResetValue);g.phase=k,g.unscaledValue=l,g.secondPrevVal=m,d.mulAdd(a),g.value=f.ugen.lastOutputValue(a,h)},d.init=function(){d.onInputChanged()},d.init(),d},f.ugen.tri.updatePeriodState=function(a,b){f.blit.updatePeriodState(a,b),a.phaseResetValue=a.d0/2,a.ampScale=2/a.d0,a.sign*=-1},d.defaults("flock.ugen.tri",{rate:"audio",inputs:{freq:440,leakRate:.01,mul:null,add:null},ugenOptions:{model:{phase:void 0,value:.5,unscaledValue:.5,secondPrevVal:0,sign:1,ampScale:void 0,phaseResetValue:void 0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");f.envelope={},f.envelope.makeCreator=function(b,c){return function(e){var f=d.defaults(b),g=a.extend(!0,{},f,e);return c(g)}},f.envelope.registerCreators=function(a,b){var c,e;for(var g in b)c=d.pathUtil.composePath(a,g),e=b[g],d.defaults(c,e.defaults),d.setGlobalValue(c,f.envelope.makeCreator(c,e.transformer))},f.envelope.creatorSpecs={line:{transformer:function(a){return{levels:[a.start,a.end],times:[a.duration]}},defaults:{start:0,end:1,duration:1}},linear:{transformer:function(a){return{levels:[0,a.level,a.level,0],times:[a.attack,a.sustain,a.release]}},defaults:{level:1,attack:.01,sustain:1,release:1}},tri:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration]}},defaults:{level:1,duration:1}},sin:{transformer:function(a){return{levels:[0,a.level,0],times:[a.duration,a.duration],curve:"sin"}},defaults:{level:1,duration:1}},asr:{transformer:function(a){return{levels:[0,a.sustain,0],times:[a.attack,a.release],sustainPoint:1,curve:-4}},defaults:{sustain:1,attack:.01,release:1}},dadsr:{transformer:function(a){var b=[0,0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.delay,a.attack,a.decay,a.release],sustainPoint:3,curve:-4}},defaults:{delay:.1,
attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}},adsr:{transformer:function(a){var b=[0,a.peak,a.peak*a.sustain,0];return DSP.add(b,b,a.bias),{levels:b,times:[a.attack,a.decay,a.release],sustainPoint:2,curve:-4}},defaults:{attack:.01,decay:.3,sustain:.5,release:1,peak:1,bias:0}}},f.envelope.registerCreators("flock.envelope",f.envelope.creatorSpecs),f.envelope.validate=function(a,b){var c=a.levels,d={};if(a.times?!c||c.length<2?d.levels="An array containing at least two levels must be specified.":(f.envelope.validate.times(a.times,c,d),f.envelope.validate.levels(c,d),f.envelope.validate.curves(a.curve,c,d),f.envelope.validate.sustainPoint(a.sustainPoint,c,d)):d.times="An array containing at least one time value must be specified.",b!==!1)for(var e in d)f.fail(d[e]);return d},f.envelope.validate.times=function(a,b,c){a.length!==b.length-1&&(c.times="The envelope specification should provide one fewer time value than the number of level values. times: "+a+" levels: "+b);for(var d=0;d<a.length;d++){var e=a[d];isNaN(e)&&(c.times="A NaN time value was specified at index "+d+". times: "+a),0>e&&(c.times="All times should be positive values. times: "+a)}},f.envelope.validate.levels=function(a,b){for(var c=0;c<a.length;c++)isNaN(a[c])&&(b.levels="A NaN level value was specified at index "+c+". levels: "+a)},f.envelope.validate.curves=function(a,b,c){if(!a)return c;f.isIterable(a)&&(a.length!==b.length-1&&(c.curve="When curve is specified as an array, there should be one fewer curve value than the number of level values. curve: "+a+" levels: "+b),d.each(a,function(b){var d=f.line.generator(b);d||(c.curve="'"+b+"' is not a valid curve type. curve: "+a)}));var e=f.line.generator(a);e||(c.curve="'"+a+"' is not a valid curve type.")},f.envelope.validate.sustainPoint=function(a,b,c){(0>a||a>=b.length)&&(c.sustainPoint="The specified sustainPoint index is out range for the levels array. sustainPoint: "+a+" levels: "+b)},f.envelope.expand=function(a){var b="string"==typeof a?d.invokeGlobalFunction(a):a.type?d.invokeGlobalFunction(a.type,[a]):a;if(b.curves&&!b.curve&&(b.curve=b.curves),!f.isIterable(b.curve)){var c=b.levels.length-1;b.curve=f.generate(new Array(c),b.curve)}return f.envelope.validate(b,!0),b},f.line={fill:function(a,b,c,d,e,g){e=void 0===e?0:e,g=void 0===g?b.length:g;var h=g-e,i=f.line.fill.model;i.unscaledValue=c,i.destination=d,i.numSegmentSamps=h-1,"number"==typeof a&&(i.currentCurve=a,a="curve");var j=f.line[a];return j||f.fail("No line generator could be found for type "+a),j.init(i),j.gen(h,e,b,i)},generator:function(a){var b=typeof a;return"string"===b?f.line[a]:"number"===b?f.line.curve:f.line.linear},constant:{init:function(a){a.stepSize=0},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=b;a+b>f;f++)c[f]=e;return c}},step:{init:function(a){a.arrived=!1},gen:function(a,b,c,d){for(var e=b;a+b>e;e++)c[e]=d.unscaledValue,d.arrived||(d.arrived=!0,d.unscaledValue=d.destination);return c}},linear:{init:function(a){a.stepSize=(a.destination-a.unscaledValue)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e+=f;return d.unscaledValue=e,d.stepSize=f,c}},exponential:{init:function(a){0===a.unscaledValue&&(a.unscaledValue=1e-16),a.stepSize=0===a.numSegmentSamps?0:Math.pow(a.destination/a.unscaledValue,1/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.stepSize,g=b;a+b>g;g++)c[g]=e,e*=f;return d.unscaledValue=e,d.stepSize=f,c}},curve:{init:function(a){if(Math.abs(a.currentCurve)<.001)return f.line.linear.init(a);var b=(a.destination-a.unscaledValue)/(1-Math.exp(a.currentCurve));a.a2=a.unscaledValue+b,a.b1=b,a.stepSize=Math.exp(a.currentCurve/a.numSegmentSamps)},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.b1,g=b;a+b>g;g++)c[g]=e,f*=d.stepSize,e=d.a2-f;return d.unscaledValue=e,d.b1=f,c}},sin:{init:function(a){var b=Math.PI/a.numSegmentSamps;a.a2=.5*(a.destination+a.unscaledValue),a.b1=2*Math.cos(b),a.y1=.5*(a.destination-a.unscaledValue),a.y2=a.y1*Math.sin(f.HALFPI-b),a.unscaledValue=a.a2-a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaledValue,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,f=d.a2-e,h=g,g=e;return d.unscaledValue=f,d.y1=g,d.y2=h,c}},welsh:{init:function(a){var b=f.HALFPI/a.numSegmentSamps,c=Math.cos(b);a.b1=2*c,a.destination>=a.unscaledValue?(a.a2=a.unscaledValue,a.y1=0,a.y2=-Math.sin(b)*(a.destination-a.unscaledValue)):(a.a2=a.destination,a.y1=a.unscaledValue-a.destination,a.y2=c*(a.unscaledValue-a.destination)),a.unscaledValue=a.a2+a.y1},gen:function(a,b,c,d){for(var e,f=d.unscaledValue,g=d.y1,h=d.y2,i=b;a+b>i;i++)c[i]=f,e=d.b1*g-h,h=g,g=e,f=d.a2+e;return d.unscaledValue=f,d.y1=g,d.y2=h,c}},squared:{init:function(a){a.y1=Math.sqrt(a.unscaledValue),a.y2=Math.sqrt(a.destination),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f;return d.y1=f,d.unscaledValue=e,c}},cubed:{init:function(a){var b=.3333333333333333;a.y1=Math.pow(a.unscaledValue,b),a.y2=Math.pow(a.destination,b),a.stepSize=(a.y2-a.y1)/a.numSegmentSamps},gen:function(a,b,c,d){for(var e=d.unscaledValue,f=d.y1,g=b;a+b>g;g++)c[g]=e,f+=d.stepSize,e=f*f*f;return d.y1=f,d.unscaledValue=e,c}}},f.line.fill.model={unscaledValue:0,value:0,destination:1},f.ugen.line=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.stepSize,g=c.numSteps,h=g>=a?a:g,i=a-h,j=c.level,k=d.output;for(b=0;h>b;b++)k[b]=j,g--,j+=e;if(i>0)for(b=0;i>b;b++)k[b]=j;c.level=c.unscaledValue=j,c.numSteps=g,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){var a=d.model;a.start=d.inputs.start.output[0],a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),0===a.numSteps?(a.stepSize=0,a.level=a.end):(a.stepSize=(a.end-a.start)/a.numSteps,a.level=a.start),f.onMulAddInputChanged(d)},d.onInputChanged(),d},d.defaults("flock.ugen.line",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,stepSize:0,level:0,unscaledValue:0,value:0}}}),f.ugen.xLine=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=c.multiplier,g=c.numSteps,h=g>=a?a:g,i=a-h,j=c.level,k=d.output;for(b=0;h>b;b++)k[b]=j,g--,j*=e;if(i>0)for(b=0;i>b;b++)k[b]=j;c.level=c.unscaledValue=j,c.numSteps=g,d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,k)},d.onInputChanged=function(){var a=d.model;f.onMulAddInputChanged(d),a.start=d.inputs.start.output[0],0===a.start&&(a.start=1e-101),a.end=d.inputs.end.output[0],a.numSteps=Math.round(d.inputs.duration.output[0]*a.sampleRate),a.multiplier=Math.pow(a.end/a.start,1/a.numSteps),a.level=a.start},d.onInputChanged(),d},d.defaults("flock.ugen.xLine",{rate:"control",inputs:{start:0,end:1,duration:1,mul:null,add:null},ugenOptions:{model:{start:0,end:1,numSteps:0,multiplier:0,level:0,unscaledValue:0,value:0}}}),f.ugen.asr=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c,e=d.model,g=d.output,h=e.previousGate,i=d.inputs.gate.output[0],j=e.level,k=e.stage,l=k.currentStep,m=k.stepInc,n=k.numSteps,o=e.targetLevel,p=!1;for(0>=h&&i>0?(o=d.inputs.sustain.output[0],b=d.inputs.attack.output[0],p=!0):0>=i&&l>=n&&(o=d.inputs.start.output[0],b=d.inputs.release.output[0],p=!0),p&&(n=Math.round(b*e.sampleRate),m=(o-j)/n,l=0),c=0;a>c;c++)g[c]=j,l++,j=n>l?j+m:l===n?o:j;e.level=e.unscaledValue=j,e.targetLevel=o,e.previousGate=i,k.currentStep=l,k.stepInc=m,k.numSteps=n,d.mulAdd(a),e.value=f.ugen.lastOutputValue(a,g)},d.init=function(){var a=d.model;a.level=a.unscaledValue=d.inputs.start.output[0],a.targetLevel=d.inputs.sustain.output[0],d.onInputChanged()},d.init(),d},d.defaults("flock.ugen.asr",{rate:"control",inputs:{start:0,attack:.01,sustain:1,release:1,gate:0,mul:null,add:null},ugenOptions:{model:{level:0,targetLevel:0,previousGate:0,unscaledValue:0,value:0,stage:{currentStep:0,stepInc:0,numSteps:0}}}}),f.ugen.env={},f.ugen.env.simpleASR=f.ugen.asr,d.defaults("flock.ugen.env.simpleASR",d.copy(d.defaults("flock.ugen.asr"))),f.ugen.envGen=function(a,b,c){var d=f.ugen(a,b,c);return d.krGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output[0],i=g.timeScale.output[0],j=0;for(f.ugen.envGen.checkGate(d,h,i);a>j;)b=Math.min(a-j,c.numSegmentSamps),d.lineGen.gen(b,j,e,c),j+=b,c.numSegmentSamps-=b,0===c.numSegmentSamps&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.arGen=function(a){var b,c=d.model,e=d.output,g=d.inputs,h=g.gate.output,i=g.timeScale.output[0];for(b=0;a>b;b++)f.ugen.envGen.checkGate(d,h[b],i),d.lineGen.gen(1,b,e,c),c.numSegmentSamps--,0===c.numSegmentSamps&&f.ugen.envGen.nextStage(d,i);d.mulAdd(a),c.value=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(a){a&&"envelope"!==a||(d.envelope=f.ugen.envGen.initEnvelope(d,d.inputs.envelope)),a&&"gate"!==a||(d.gen=d.inputs.gate.rate===f.rates.AUDIO?d.arGen:d.krGen),f.onMulAddInputChanged(d)},d.onInputChanged(),d},f.ugen.envGen.initEnvelope=function(a,b){var c=a.model,d=f.envelope.expand(b);return c.stage=0,c.numStages=d.times.length,a.lineGen=f.line.constant,f.ugen.envGen.lineGenForStage(a.inputs.timeScale.output[0],d,c),c.unscaledValue=d.levels[c.stage],d},f.ugen.envGen.checkGate=function(a,b,c){var d=a.model,e=a.envelope;b!==d.previousGate&&(b>0&&d.previousGate<=0?(d.stage=1,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d)):0>=b&&d.previousGate>0&&(d.stage=d.numStages,a.lineGen=f.ugen.envGen.lineGenForStage(c,e,d))),d.previousGate=b},f.ugen.envGen.nextStage=function(a,b){var c=a.model,d=a.envelope;c.stage===d.sustainPoint?(a.lineGen=f.line.constant,c.numSegmentSamps=1/0,c.destination=c.unscaledValue):(c.stage++,a.lineGen=f.ugen.envGen.lineGenForStage(b,d,c))},f.ugen.envGen.setupStage=function(a,b,c){var d,e,f=b.levels[c.stage];0===c.stage||c.stage>c.numStages?e=1/0:(d=b.times[c.stage-1]*a,e=Math.max(1,d*c.sampleRate)),c.numSegmentSamps=e,c.destination=f},f.ugen.envGen.lineGenForStage=function(a,b,c){var d,e,g=b.curve;return 0===c.stage||c.stage>c.numStages?d=f.line.constant:(e=g[c.stage-1],c.currentCurve=e,d=f.line.generator(e)),f.ugen.envGen.setupStage(a,b,c),d.init(c),d},d.defaults("flock.ugen.envGen",{rate:"audio",inputs:{envelope:"flock.envelope.adsr",gate:0,timeScale:1,mul:null,add:null},ugenOptions:{model:{previousGate:0,stepSize:0,destination:0,numSegmentSamps:1,unscaledValue:0,value:0,stage:0,numStages:0}}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";var a=d.registerNamespace("jQuery");d.registerNamespace("flock.ugen"),f.ugen.scope=function(a,b,c){var d=f.ugen(a,b,c);return d.gen=function(a){var b,c=d.model,e=d.inputs.source.output,g=c.spf,h=c.bufIdx,i=c.scope.values;for(b=0;a>b;b++)i[h]=e[b],g>h?h+=1:(h=0,d.scopeView.refreshView());c.bufIdx=h,c.value=c.unscaledValue=f.ugen.lastOutputValue(a,e)},d.onInputChanged=function(){d.output=d.inputs.source.output},d.init=function(){d.model.spf=Math.round(d.model.sampleRate/d.options.fps),d.model.bufIdx=0,d.model.scope=d.options.styles,d.model.scope.values=new Float32Array(d.model.spf),d.scopeView=f.view.scope(d.options.canvas,d.model.scope),d.onInputChanged(),d.scopeView.refreshView()},d.init(),d},d.defaults("flock.ugen.scope",{rate:"audio",inputs:{source:null},ugenOptions:{fps:60,styles:{strokeColor:"#777777",strokeWidth:1}}}),f.ugen.mouse={},f.ugen.mouse.cursor=function(b,c,d){var e=f.ugen(b,c,d);return e.exponentialGen=function(a){var b,c,d=e.model,g=f.ugen.mouse.cursor.normalize(e.target,d),h=d.movingAvg,i=e.inputs.lag.output[0],j=e.inputs.add.output[0],k=e.inputs.mul.output[0],l=d.lagCoef,m=e.output;for(i!==l&&(l=0===i?0:Math.exp(f.LOG001/(i*d.sampleRate)),d.lagCoef=l),b=0;a>b;b++)c=k+j,g=Math.pow(c/j,g)*j,h=g+l*(h-g),m[b]=h;d.movingAvg=h,d.value=d.unscaledValue=h},e.linearGen=function(a){var b,c=e.model,d=f.ugen.mouse.cursor.normalize(e.target,c),g=c.movingAvg,h=e.inputs.lag.output[0],i=e.inputs.add.output[0],j=e.inputs.mul.output[0],k=c.lagCoef,l=e.output;for(h!==k&&(k=0===h?0:Math.exp(f.LOG001/(h*c.sampleRate)),c.lagCoef=k),b=0;a>b;b++)g=d+k*(g-d),l[b]=g*j+i;c.movingAvg=c.unscaledValue=g,c.value=f.ugen.lastOutputValue(a,l)},e.noInterpolationGen=function(a){var b,c=e.model,d=e.output,g=f.ugen.mouse.cursor.normalize(e.target,c);for(b=0;a>b;b++)d[b]=g*e.inputs.mul.output[0]+e.inputs.add.output[0];c.value=c.unscaledValue=f.ugen.lastOutputValue(a,d)},e.moveListener=function(a){var b=e.model;b.mousePosition=a[b.eventProp]},e.overListener=function(){e.model.isWithinTarget=!0},e.outListener=function(){var a=e.model;a.isWithinTarget=!1,a.mousePosition=0},e.downListener=function(){e.model.isMouseDown=!0},e.upListener=function(){var a=e.model;a.isMouseDown=!1,a.mousePosition=0},e.moveWhileDownListener=function(a){e.model.isMouseDown&&e.moveListener(a)},e.bindEvents=function(){var a=e.target,b=e.moveListener;e.options.onlyOnMouseDown&&(a.mousedown(e.downListener),a.mouseup(e.upListener),b=e.moveWhileDownListener),a.mouseover(e.overListener),a.mouseout(e.outListener),a.mousemove(b)},e.onInputChanged=function(){f.onMulAddInputChanged(e);var a=e.options.interpolation;e.gen="none"===a?e.noInterpolationGen:"exponential"===a?e.exponentialGen:e.linearGen},e.init=function(){var b=e.model,c=e.options,d=c.axis,f=a(c.target||window);"x"===d||"width"===d||"horizontal"===d?(b.eventProp="clientX",b.offsetProp="left",b.dimension="width"):(b.eventProp="clientY",b.offsetProp="top",b.dimension="height"),e.target=f,b.mousePosition=0,b.movingAvg=0,e.bindEvents(),e.onInputChanged()},e.init(),e},f.ugen.mouse.cursor.normalize=function(a,b){if(!b.isWithinTarget)return 0;var c=a[b.dimension](),d=a.offset(),e=b.mousePosition;return d&&(e-=d[b.offsetProp]),e/c},d.defaults("flock.ugen.mouse.cursor",{rate:"control",inputs:{lag:.5,add:0,mul:1},ugenOptions:{axis:"x",interpolation:"linear",model:{mousePosition:0,movingAvg:0,value:0}}}),f.ugen.mouse.click=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){var b,c=e.output,d=e.model;for(b=0;a>b;b++)c[b]=d.unscaledValue;e.mulAdd(a),d.value=f.ugen.lastOutputValue(a,c)},e.mouseDownListener=function(){e.model.unscaledValue=1},e.mouseUpListener=function(){e.model.unscaledValue=0},e.init=function(){var b=e.model;b.target=a(e.options.target?e.options.target:window),b.target.mousedown(e.mouseDownListener),b.target.mouseup(e.mouseUpListener),e.onInputChanged()},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init(),e},d.defaults("flock.ugen.mouse.click",{rate:"control"}),f.ugen.mediaIn=function(b,c,d){var e=f.ugen(b,c,d);return e.gen=function(a){for(var b,c=e.model,d=e.output,g=e.bus,h=0;a>h;h++)d[h]=b=g[h];c.unscaledValue=b,e.mulAdd(a),c.value=f.ugen.lastOutputValue(a,d)},e.onInputChanged=function(){f.onMulAddInputChanged(e)},e.init=function(){var b=f.enviro.shared,c=a(e.options.element),d=b.audioStrategy.nativeNodeManager.createMediaElementInput(c[0]);e.bus=e.options.audioSettings.buses[d],e.onInputChanged(),f.platform.browser.safari?f.log.warn("MediaElementSourceNode does not work on Safari. For more information, see https://bugs.webkit.org/show_bug.cgi?id=84743 and https://bugs.webkit.org/show_bug.cgi?id=125031"):f.platform.isAndroid&&f.log.warn("MediaElementSourceNode does not work on Android. For more information, see https://code.google.com/p/chromium/issues/detail?id=419446")},e.init(),e},d.defaults("flock.ugen.mediaIn",{rate:"audio",inputs:{mul:null,add:null},ugenOptions:{element:"audio"}})}();var d=d||require("infusion"),f=d.registerNamespace("flock");!function(){"use strict";d.registerNamespace("flock.view"),f.view.scope=function(a,b){var c={model:b||{values:[]},canvas:"string"==typeof a?document.querySelector(a):a};return c.refreshView=function(){var a,b,d,e=c.ctx,f=c.model.height,g=c.model.halfHeight,h=c.model.width,i=c.model.values,j=i.length,k=c.model.scaleX*(h/j);for(e.clearRect(0,0,h,f),e.beginPath(),a=0;j>a;a++)b=a*k,d=i[a]*c.model.scaleY*g+g,e.lineTo(b,d);e.stroke()},c.init=function(){c.ctx=c.canvas.getContext("2d"),c.ctx.fillStyle=c.model.fill||c.ctx.fillStyle,c.ctx.strokeStyle=c.model.strokeColor||c.ctx.strokeStyle,c.ctx.lineWidth=c.model.strokeWidth||c.ctx.lineWidth,c.model.min=c.model.min||-1,c.model.max=c.model.max||1,c.model.height=c.canvas.height,c.model.halfHeight=c.model.height/2,c.model.width=c.canvas.width,c.model.scaleX=c.model.scaleX||c.model.scale||1,c.model.scaleY=c.model.scaleY||c.model.scale||1,c.refreshView()},c.init(),c}}();var d=d||require("infusion"),f=d.registerNamespace("flock");return function(){"use strict";d.registerNamespace("flock.midi"),f.midi.requestAccess=function(a,b,c){if(!navigator.requestMIDIAccess){var e="The Web MIDI API is not available. You may need to enable it in your browser's settings.";return d.log(d.logLevel.WARN,e),void c(e)}var f=navigator.requestMIDIAccess({sysex:a});f.then(b,c)},f.midi.getPorts=function(a){var b={},c="function"==typeof a.inputs?f.midi.collectPortsLegacy:f.midi.collectPorts;return c("inputs",a,b),c("outputs",a,b),b},f.midi.requestPorts=function(a,b){function c(b){var c=f.midi.getPorts(b);a(c)}f.midi.requestAccess(!1,c,b)},f.midi.createPortViews=function(a){return d.transform(a,function(a){return{id:a.id,name:a.name,manufacturer:a.manufacturer,state:a.state,connection:a.connection}})},f.midi.prettyPrintPorts=function(a){return d.prettyPrintJSON({inputs:f.midi.createPortViews(a.inputs),outputs:f.midi.createPortViews(a.outputs)})},f.midi.logPorts=function(){function a(a){var b=f.midi.prettyPrintPorts(a);console.log(b)}function b(a){console.log(a)}f.midi.requestPorts(a,b)},f.midi.collectPorts=function(a,b,c){for(var d=c[a]=c[a]||[],e=b[a].values(),f=e.next();!f.done;)d.push(f.value),f=e.next();return c},f.midi.collectPortsLegacy=function(a,b,c){return b[a]&&(c[a]=b[a]()),c},f.midi.read=function(a){var b,c=a[0],d=c>>4,e=15&c;switch(d){case 8:b=f.midi.read.noteOff;break;case 9:b=a[2]>0?f.midi.read.noteOn:f.midi.read.noteOff;break;case 10:b=f.midi.read.polyAftertouch;break;case 11:b=f.midi.read.controlChange;break;case 12:b=f.midi.read.programChange;break;case 13:b=f.midi.read.channelAftertouch;break;case 14:b=f.midi.read.pitchbend;break;case 15:b=f.midi.read.sysex;break;default:throw new Error("Recieved an unrecognized MIDI message: "+a)}return b(e,a)},f.midi.read.note=function(a,b,c){return{type:a,chan:b,note:c[1],velocity:c[2]}},f.midi.read.noteOn=function(a,b){return f.midi.read.note("noteOn",a,b)},f.midi.read.noteOff=function(a,b){return f.midi.read.note("noteOff",a,b)},f.midi.read.polyAftertouch=function(a,b){return{type:"aftertouch",chan:a,note:b[1],pressure:b[2]}},f.midi.read.controlChange=function(a,b){return{type:"control",chan:a,number:b[1],value:b[2]}},f.midi.read.programChange=function(a,b){return{type:"program",chan:a,program:b[1]}},f.midi.read.channelAftertouch=function(a,b){return{type:"aftertouch",chan:a,pressure:b[1]}},f.midi.read.pitchbend=function(a,b){return{type:"pitchbend",chan:a,value:b[1]<<7|b[2]}},f.midi.read.sysex=function(a,b){return{type:"system",chan:a,data:b.subarray(1)}},d.defaults("flock.midi.system",{gradeNames:["fluid.eventedComponent","autoInit"],sysex:!1,members:{access:void 0,ports:void 0},invokers:{requestAccess:{funcName:"flock.midi.requestAccess",args:["{that}.options.sysex","{that}.events.onAccessGranted.fire","{that}.events.onAccessError.fire"]},refreshPorts:{funcName:"flock.midi.system.refreshPorts",args:["{that}","{that}.access"]}},events:{onAccessGranted:null,onAccessError:null,onReady:null},listeners:{onCreate:{func:"{that}.requestAccess"},onAccessGranted:[{funcName:"flock.midi.system.setAccess",args:["{that}","{arguments}.0"]},{func:"{that}.refreshPorts"},{func:"{that}.events.onReady.fire",args:"{that}.ports"}],onAccessError:{funcName:"fluid.log",args:[d.logLevel.WARN,"MIDI Access Error: ","{arguments}.0"]}}}),f.midi.system.setAccess=function(a,b){a.access=b},f.midi.system.refreshPorts=function(a,b){a.ports=f.midi.getPorts(b)},d.defaults("flock.midi.connection",{gradeNames:["fluid.eventedComponent","autoInit"],openImmediately:!1,sysex:!1,distributeOptions:{source:"{that}.options.sysex",target:"{that > system}.options.sysex"},ports:0,invokers:{send:{func:"{that}.events.onSendMessage.fire"},open:{funcName:"flock.midi.connection.bind",args:["{system}.ports","{that}.options.ports","{that}.events.onReady.fire","{that}.events.raw.fire","{that}.events.onSendMessage"]},close:{funcName:"flock.midi.connection.close",args:["{system}.ports","{that}.events.raw.fire"]}},components:{system:{type:"flock.midi.system",options:{events:{onReady:"{connection}.events.onPortsAvailable"}}}},events:{onPortsAvailable:null,onReady:null,onError:null,onSendMessage:null,raw:null,message:null,note:null,noteOn:null,noteOff:null,control:null,program:null,aftertouch:null,pitchbend:null},listeners:{onPortsAvailable:{funcName:"flock.midi.connection.autoOpen",args:["{connection}.options.openImmediately","{connection}.open"]},onError:{funcName:"fluid.log",args:[d.logLevel.WARN,"{arguments}.0"]},raw:{funcName:"flock.midi.connection.fireEvent",args:["{arguments}.0","{that}.events"]}}}),f.midi.connection.autoOpen=function(a,b){a&&b()},f.midi.findPorts=function(a,b){b=d.makeArray(b);var c=[];return d.each(b,function(b){var d=f.midi.findPorts.portFinder(b),e=d(a);c=c.concat(e)}),c},f.midi.findPorts.portFinder=function(a){if("number"==typeof a)return f.midi.findPorts.byIndex(a);if("string"==typeof a&&(a={name:a}),a.id)return function(b){b.find(f.midi.findPorts.idMatcher(a.id))};var b=a.manufacturer&&a.name?f.midi.findPorts.bothMatcher(a.manufacturer,a.name):a.manufacturer?f.midi.findPorts.manufacturerMatcher(a.manufacturer):f.midi.findPorts.nameMatcher(a.name);return function(a){return a.filter(b)}},f.midi.findPorts.byIndex=function(a){return function(b){var c=b[a];return c?[c]:[]}},f.midi.findPorts.lowerCaseContainsMatcher=function(a){return function(b){var c;for(var d in a){var e=b[d],f=a[d];if(c="*"===f?!0:e&&e.toLowerCase().indexOf(f.toLowerCase())>-1,!c)break}return c}},f.midi.findPorts.idMatcher=function(a){return function(b){return b.id===a}},f.midi.findPorts.bothMatcher=function(a,b){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a,name:b})},f.midi.findPorts.manufacturerMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({manufacturer:a})},f.midi.findPorts.nameMatcher=function(a){return f.midi.findPorts.lowerCaseContainsMatcher({name:a})},f.midi.findPorts.eachPortOfType=function(a,b,c){var e=d.makeArray(a);d.each(e,function(a){a.type===b&&c(a)})},f.midi.connection.openPort=function(a,b){if(a.open){var c=a.open();b.push(c)}return b},f.midi.connection.listen=function(a,b,c){return f.midi.findPorts.eachPortOfType(a,"input",function(a){f.midi.connection.openPort(a,c),a.addEventListener("midimessage",b,!1)}),c},f.midi.connection.stopListening=function(a,b){f.midi.findPorts.eachPortOfType(a,"input",function(a){a.close(),a.removeEventListener("midimessage",b,!1)})},f.midi.connection.bindSender=function(a,b,c){var e=d.makeArray(a);return d.each(e,function(a){f.midi.connection.openPort(a,c),b.addListener(a.send.bind(a))}),c},f.midi.connection.fireReady=function(a,b){!a||a.length<1||Promise.all(a).then(b)},f.midi.connection.bind=function(a,b,c,d,e){b=f.midi.connection.expandPortSpec(b);var g=f.midi.findPorts(a.inputs,b.input),h=f.midi.findPorts(a.outputs,b.output),i=[];g&&g.length>0?f.midi.connection.listen(g,d,i):void 0!==b.input&&f.midi.connection.logNoMatchedPorts("input",b),h&&h.length>0?f.midi.connection.bindSender(h,e,i):void 0!==b.output&&f.midi.connection.logNoMatchedPorts("output",b),f.midi.connection.fireReady(i,c)},f.midi.connection.close=function(a,b){f.midi.connection.stopListening(a.inputs,b)},f.midi.connection.logNoMatchedPorts=function(a,b){d.log(d.logLevel.WARN,"No matching "+a+" ports were found for port specification: ",b[a])},f.midi.connection.expandPortSpec=function(a){if(void 0!==a.input||void 0!==a.output)return a;var b={input:{},output:{}};return"number"==typeof a?b.input=b.output=a:(f.midi.connection.expandPortSpecProperty("manufacturer",a,b),f.midi.connection.expandPortSpecProperty("name",a,b)),b},f.midi.connection.expandPortSpecProperty=function(a,b,c){return c.input[a]=c.output[a]=b[a],c},f.midi.connection.fireEvent=function(a,b){var c=f.midi.read(a.data),d=c.type?b[c.type]:void 0;b.message.fire(c),("noteOn"===c.type||"noteOff"===c.type)&&b.note.fire(c),d&&d.fire(c)}}(),window.fluid=d,f});