You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2014/04/10 22:22:18 UTC

[13/63] [abbrv] new bower build

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/f3b55942/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
----------------------------------------------------------------------
diff --git a/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js b/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
deleted file mode 100644
index 71dee75..0000000
--- a/portal/dist/usergrid-portal/bower_components/apigee.max.ui/dist/js/max-dev.min.js
+++ /dev/null
@@ -1,1781 +0,0 @@
-/*! apigee-max-ui@1.0.1 2014-03-24 */
- AppServices = AppServices || {};(function(exports, global) {
-    global["true"] = exports;
-    angular.module("appservices.max").run([ "$templateCache", function($templateCache) {
-        "use strict";
-        $templateCache.put("performance/ab-config.html", "<div>\n" + "\n" + '    <page-title icon="&#59146;" title="A/B Testing Configs"></page-title>\n' + "\n" + '    <div class="row-fluid" >\n' + "\n" + '        <div class="span12">\n' + '          <form class="form-horizontal configs">\n' + '          <div class="control-group">\n' + '            <slidecheckbox label="Enable A/B Testing" data="configData.abtestingOverrideEnabled"></slidecheckbox>\n' + "          </div>\n" + "\n" + '          <div class="control-group">\n' + '            <label class="control-label" for="inputApplyTo">Apply to </label>\n' + '            <div class="controls">\n' + '              <input type="text" id="inputApplyTo" class="input-mini" ng-model="configData.abtestingPercentage"> % of Devices\n' + "            </div>\n" + "          </div>\n" + "          \n" + "          \n" + '          <h2 class="title">Monitoring Configs</h2>\n' + "\n" + "\n" + '            <div class="control-group">\n' + '      
         <slidecheckbox label="Enable Log Capturing" data="configData.abtestingAppConfig.enableLogMonitoring"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label">Log Capture Levels</label>\n' + '              <div class="controls">\n' + '                <select ng-model="abLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(abLogLevel,\'abtestingAppConfig\')"></select>\n' + "              </div>\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Enable Network Monitoring" data="configData.abtestingAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Enable Device Data Capture" data="configData.abtestingAppConfig.sessionDataCaptureEnabled"></slidecheckbox>\n' + "            </div>\n" + '            <div cl
 ass="control-group">\n' + "\n" + '              <slidecheckbox label="Read Location" data="configData.abtestingAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read IMEI" data="configData.abtestingAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Device Model" data="configData.abtestingAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Network Carrier" data="configData.abtestingAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Apigee Device ID" data="configData.abtestingAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + '              <div class="controls">\n' + '            
     <input type="text" id="inputUploadInt" ng-model="configData.abtestingAppConfig.agentUploadIntervalInSeconds">\n' + "              </div>\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + '              <div class="controls">\n' + '                <input type="text" id="inputSampRate" ng-model="configData.abtestingAppConfig.samplingRate">\n' + "              </div>\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Upload When Roaming" data="configData.abtestingAppConfig.enableUploadWhenRoaming"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Upload When Not on WIFI" data="configData.abtestingAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + "            </div>\n" + "\n" + '            <h2 class="title
 ">Application Specific Configs</h2>\n' + '              <div class="row-fluid"  >\n' + '                  <div class="span3" style="margin-right: 12px;">Tag</div>\n' + '                  <div class="span3" style="margin-right: 15px;">Key</div>\n' + '                  <div class="span3">Value</div>\n' + "              </div>\n" + '            <div class="form-inline" ng-repeat="config in abConfigParameters">\n' + '              <input name="category" type="text" class="input-large" ng-model="config.tag" required>\n' + '              <input name="key" type="text" class="input-large" ng-model="config.paramKey"  required> =\n' + '              <input name="value" type="text" class="input-large" ng-model="config.paramValue" required>\n' + '              <span class="hide">{{config.index = ($index + 1)}}</span>\n' + '              <button class="btn" ng-click="addRemoveConfig(config,\'abConfigParameters\')" ng-show="abConfigParameters.length != ($index + 1)">-</button>\n' + '             
  <button class="btn" ng-click="addRemoveConfig(config,\'abConfigParameters\')" ng-show="abConfigParameters.length == ($index + 1)">+</button>\n' + "            </div>\n" + "            <hr/>\n" + '            <button type="submit" class="btn btn-primary " ng-click="saveData(\'abConfigParameters\')">Save Changes</button>\n' + "          </form>\n" + "\n" + "        </div>\n" + "\n" + "\n" + "      </div>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/api-perf.html", "<demo-data></demo-data>\n" + '<page-title icon="&#128200;" title="API Performance"></page-title>\n' + "\n" + '<div class="page-filters">\n' + "  <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + '<div ng-init="apiPerfSetup()">\n' + '  <section class="row-fluid">\n' + "\n" + "  </section>\n" + "  <!-- errors and crashes total row -->\n" + '  <section class="row-fluid api-perf-charts">\n' + "\n" + '    <div class="span6">\n' + "\n" + '      <h2 class="title chart">Avg Response Time</h2>\n' + "\n" + '      <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + '      <div class="main-chart-holder" ng-if="chartDataPresent">\n' + '      <chart id="requestTime" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId === 1"\n' + '             chartdata="perfCharts.requestTimes"\n' + '             type="line"\n' + "             xAxisLabe
 l=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + '             xAxisStep="3"></chart>\n' + "\n" + '      <chart id="requestTimeBar" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId > 1"\n' + '             chartdata="perfCharts.requestTimes"\n' + '             type="column" class="bar"></chart>\n' + "       </div>\n" + "    </div>\n" + "\n" + '    <div class="span6">\n' + "\n" + '      <h2 class="title chart">Total Requests</h2>\n' + "\n" + '      <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + '      <div class="main-chart-holder" ng-if="chartDataPresent">\n' + '      <chart id="requests" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId === 1"\n' + '             chartdata="perfCharts.requests"\n' + '             type="line"\n' + "             xAxisLabel=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + '             xAxisStep="3"></chart>\n' + "\n" + '      <chart id="re
 questsBar" class="anim-chart" ng-if="selectedChartCriteria.chartCriteriaId > 1"\n' + '             chartdata="perfCharts.requests"\n' + '             type="column" class="bar"></chart>\n' + "      </div>\n" + "    </div>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "  </section>\n" + "\n" + '  <section class="row-fluid">\n' + "\n" + '    <div class="span12 perf-summary-data">\n' + "\n" + '      <div class="span3">\n' + '        <infobox datasrc="perfCharts.summary.avgLatency"\n' + '                 currentcompare="perfCharts.summary.currentCompare"\n' + '                 title="Avg Response Time"\n' + '                 class="response-time"></infobox>\n' + "      </div>\n" + "\n" + '      <div class="span3">\n' + '        <infobox datasrc="perfCharts.summary.maxLatency"\n' + '                 currentcompare="perfCharts.summary.currentCompare"\n' + '                 title="Max Response Time"\n' + '                 class="request-time"></infobox>\n' + "      </div>\n" + "\n" + '    
   <div class="span3">\n' + '        <infobox datasrc="perfCharts.summary.totalRequests"\n' + '                 currentcompare="perfCharts.summary.currentCompare"\n' + '                 title="Network Requests"\n' + '                 class="requests"></infobox>\n' + "      </div>\n" + "\n" + '      <div class="span3">\n' + '        <infobox datasrc="perfCharts.summary.totalErrors"\n' + '                 currentcompare="perfCharts.summary.currentCompare"\n' + '                 title="Network Errors"\n' + '                 class="errors"></infobox>\n' + "      </div>\n" + "\n" + "\n" + "    </div>\n" + "\n" + "  </section>\n" + "\n" + '  <balloon direction="south" ng-if="!chartDataPresent && logDataPresent">\n' + "    Scroll down to see log data sent by your SDK.\n" + "  </balloon>\n" + "\n" + '  <section class="row-fluid">\n' + '    <div class="span12 pareto-charts">\n' + "\n" + '      <div class="row-fluid log-search" ng-controller="RawLogCtrl">\n' + "\n" + '        <div class="span1
 2">\n' + '          <h2 class="title">Network API Search</h2>\n' + "          <form>\n" + '            <div class="input-append span8">\n' + '            <input type="text" placeholder="e.g. apigee.com..." ng-model="rawLogSearch.url"\n' + '                   class=" input-xxlarge" ng-change="loadMoreLogs()">\n' + '            <button type="button" class="btn" ng-click="rawLogSearchShowAdv=!rawLogSearchShowAdv">Advanced</button>\n' + "            </div>\n" + '            <div class="span4 text-right" ng-if="rawLogs.length === 100 || rawLogSearch.pageNumber > 0">\n' + "              {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.length) : (rawLogSearch.pageNumber + 1) * rawLogs.length}}\n" + '              <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram">&#59229;</i></a>\n' + '              <a class="btn b
 tn-primary toolbar" ng-disabled="rawLogs.length !== 100" ng-click="rawLogs.length === 100 ? nextPage() : \'\'"><i class="pictogram">&#59230;</i></a>\n' + "            </div>\n" + "          </form>\n" + '          <form class="form-inline adv-rawlog-form" ng-show="rawLogSearchShowAdv">\n' + '            <br style="clear:both"/>\n' + '            <div class="input-prepend">\n' + '              <span class="add-on">Status Code:</span>\n' + '              <input class="input-small" type="text"  ng-model="rawLogSearch.httpStatusCode" ng-change="loadMoreLogs()">\n' + "            </div>\n" + '            <div class="input-prepend">\n' + '              <span class="add-on">Resp. Time > </span>\n' + '              <input class="input-small" type="text"  ng-model="rawLogSearch.latency" ng-change="loadMoreLogs()">\n' + "            </div>\n" + '            <div class="input-prepend">\n' + '              <span class="add-on">Network Type</span>\n' + '              <input class="input-small" t
 ype="text"  ng-model="rawLogSearch.networkType" ng-change="loadMoreLogs()">\n' + "            </div>\n" + '            <div class="input-prepend">\n' + '              <span class="add-on">Carrier</span>\n' + '              <input class="input-small" type="text"  ng-model="rawLogSearch.networkCarrier" ng-change="loadMoreLogs()">\n' + "            </div>\n" + '            <div class="input-prepend">\n' + '              <span class="add-on">Platform</span>\n' + '              <input class="input-small" type="text"  ng-model="rawLogSearch.devicePlatform" ng-change="loadMoreLogs()">\n' + "            </div>\n" + "            <button type=\"submit\" class=\"btn\" ng-click=\"rawLogSearch.httpStatusCode='';rawLogSearch.latency='';rawLogSearch.networkType='';rawLogSearch.networkCarrier='';rawLogSearch.devicePlatform='';loadMoreLogs()\">Clear All Advanced</button>\n" + "          </form>\n" + '          <table class="table table-striped table-bordered raw-log-table">\n' + "            <thead>
 \n" + "            <tr>\n" + "              <th>Time</th>\n" + "              <th>Message</th>\n" + "            </tr>\n" + "            </thead>\n" + "            <tbody>\n" + "            <tr ng-repeat=\"log in rawLogs | orderBy:'timeStamp':true | rawLogFilter:rawLogSearch:['url']:['latency']\">\n" + '              <td class="log-time-holder">\n' + "                <div>\n" + "                  <span class=\"{{rawLogs.rawDataType === 'logRawData' ? 'log-time1' : 'log-time2'}}\">{{log.timeStamp | date:'M-dd-yyyy HH:mm:ss'}}</span>\n" + "                  </div>\n" + "              </td>\n" + "              <td>\n" + "                <span>{{log.url}}</span>\n" + '                <div class="row-meta">\n' + '                  <span class="label">Status Code:</span>\n' + '                  <span class="value">{{log.httpStatusCode}}</span>\n' + '                  <span class="label">Response Time:</span>\n' + '                  <span class="value">{{log.latency}}</span>\n' + '        
           <span class="label">Network Type:</span>\n' + '                  <span class="value">{{log.networkType}}</span>\n' + '                  <span class="label">Carrier:</span>\n' + '                  <span class="value">{{log.networkCarrier}}</span>\n' + '                  <span class="label">Platform:</span>\n' + '                  <span class="value">{{log.devicePlatform}}</span>\n' + "                </div>\n" + "              </td>\n" + "            </tr>\n" + "            </tbody>\n" + "          </table>\n" + '          <div class="row-fluid">\n' + '            <div class="input-append span8">\n' + "\n" + "\n" + "            </div>\n" + '            <div class="span4 text-right" ng-if="rawLogs.length === 100 || rawLogSearch.pageNumber > 0">\n' + "              {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.length) : (rawLogSearch.pageNumber + 1) * rawLogs.length}}\n" + '              <a class="btn bt
 n-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram">&#59229;</i></a>\n' + '              <a class="btn btn-primary toolbar" ng-disabled="rawLogs.length !== 100" ng-click="rawLogs.length === 100 ? nextPage() : \'\'"><i class="pictogram">&#59230;</i></a>\n' + "            </div>\n" + "          </div>\n" + "        </div>\n" + "\n" + "      </div>\n" + "\n" + "    </div>\n" + "  </section>\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/app-overview.html", "<demo-data></demo-data>\n" + "\n" + "<div ng:include=\"'performance/includes/time-filters.html'\"></div>\n" + "\n" + '<div ng-controller="PerformanceCtrl" ng-init="appOverviewSetup()">\n' + "<!-- crash errors row -->\n" + '<section class="row-fluid errors-crashes">\n' + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">\n' + '            <li class="title">Top 5 Crash Causes</li>\n' + '            <li class="secondary">15 Total</li>\n' + '            <li class="tertiary">38 users affected</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 top-5-crash info-box">\n' + '            <div class="info-container">\n' + '                <table class="table">\n' + "                    <thead>\n" + "                    <tr>\n" + '                        <th class="graph-row">Cause</th>\n' + '                        <th class="count">Total</th>\n' + "                    </tr>\n" + "   
                  </thead>\n" + "                    <tbody>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                         
    <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    </tbody>\n" + "                </table>\n" + "            </div>\n" + "        </div>\n" + "\n" + "    </div>\n" + "\n" + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">\n' + '            <li class="title">Top 5 Errors</li>\n' + '            <li class="secondary">120 Total</li>\n' + '            <li class="tertiary">200 users affected</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 top-5-crash info-box">\n' + '            <div class="info-container">\n' + '                <tabl
 e class="table">\n' + "                    <thead>\n" + "                    <tr>\n" + '                        <th class="graph-row">Cause</th>\n' + '                        <th class="count">Total</th>\n' + "                    </tr>\n" + "                    </thead>\n" + "                    <tbody>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</
 div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="graph-row">\n' + '                            <div class="bar">message</div>\n' + "                        </td>\n" + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    </tbody>\n" + "                </table>\n" + "            </div>\n" + "        </div>\n" + "\n" + "    </div>\n" + "</section>\n" + "\n" + "<!-- api row -->\n" + '<section class="row-fluid api-issues">\n' + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">
 \n' + '            <li class="title">Slow APIs</li>\n' + '            <li class="secondary">Above 2000ms</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 slow-apis info-box">\n' + '            <div class="info-container">\n' + '                <table class="table">\n' + "                    <thead>\n" + "                    <tr>\n" + '                        <th class="normal-row">URL</th>\n' + '                        <th class="count">Response Time</th>\n' + "                    </tr>\n" + "                    </thead>\n" + "                    <tbody>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '           
              <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    </tbody>\n" + "                </table>\n" + "            </div>\n" + "        </div>\n" + "\n" + "    </div>\n" + "\n" + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">\n' + '            <li class="title">API Errors</li>\n' + '            <li class="secondary">Abnormal Status Codes</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 api-errors info-box">\n' + '            <div class="info-container">\n' +
  '                <table class="table">\n' + "                    <thead>\n" + "                    <tr>\n" + '                        <th class="normal-row">URL</th>\n' + '                        <th class="count">Status Code</th>\n' + "                    </tr>\n" + "                    </thead>\n" + "                    <tbody>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '   
                      <td class="count">134</td>\n' + "                    </tr>\n" + "                    <tr>\n" + '                        <td class="normal-row">message</td>\n' + '                        <td class="count">134</td>\n' + "                    </tr>\n" + "                    </tbody>\n" + "                </table>\n" + "            </div>\n" + "        </div>\n" + "\n" + "    </div>\n" + "</section>\n" + "\n" + "\n" + "<!-- app usage row -->\n" + '<section class="row-fluid api-issues">\n' + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">\n' + '            <li class="title">App Usage</li>\n' + '            <li class="secondary">By Version</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 app-usage-content">\n' + '            <chart id="appVersions" value=\'{{appOverviewCharts.appVersions}}\' type="pie"\n' + '                   style="max-width: 50%;height:250px"></chart>\n' + '            <table class="table">\n' +
  "                <thead>\n" + "                <tr>\n" + "                    <th>App Version</th>\n" + "                </tr>\n" + "                </thead>\n" + "                <tbody>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        1.0.0\n" + "                    </td>\n" + '                    <td class="count">12%</td>\n' + "                </tr>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        1.1.1\n" + "                    </td>\n" + '                    <td class="count">22%</td>\n' + "                </tr>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        1.2.0\n" + "                    </td>\n" + '                    <td class="count">63%</td>
 \n' + "                </tr>\n" + "                </tbody>\n" + "            </table>\n" + "        </div>\n" + "\n" + "    </div>\n" + "\n" + '    <div class="span6">\n' + "\n" + '        <ul class="span2 info-details unstyled">\n' + '            <li class="title">App Usage</li>\n' + '            <li class="secondary">By Platform</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10 app-usage-content">\n' + '            <chart id="platformVersions" value=\'{{appOverviewCharts.platformVersions}}\' type="pie"\n' + '                   style="max-width: 50%;height:250px"></chart>\n' + '            <table class="table">\n' + "                <thead>\n" + "                <tr>\n" + "                    <th>Platform</th>\n" + "                </tr>\n" + "                </thead>\n" + "                <tbody>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        Firefox OS\
 n" + "                    </td>\n" + '                    <td class="count">12%</td>\n' + "                </tr>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        Android\n" + "                    </td>\n" + '                    <td class="count">22%</td>\n' + "                </tr>\n" + "                <tr>\n" + '                    <td class="graph-row">\n' + '                        <div class="bar"></div>\n' + "                        iOS\n" + "                    </td>\n" + '                    <td class="count">63%</td>\n' + "                </tr>\n" + "                </tbody>\n" + "            </table>\n" + "        </div>\n" + "\n" + "    </div>\n" + "</section>\n" + "\n" + "<!-- trouble makers row -->\n" + '<section class="row-fluid trouble-makers">\n' + '    <div class="span12">\n' + "\n" + '        <ul class="span2 info-details fixed unstyled">\n' + '           
  <li class="title">Trouble Makers</li>\n' + '            <li class="secondary">Problematic Devices, Networks, and OSs</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10">\n' + '            <div class="row-fluid">\n' + '                <div class="span12">\n' + "\n" + '                    <section class="span4">\n' + "                        <h5>Problematic Devices</h5>\n" + '                        <table class="table">\n' + "                            <tbody>\n" + "                            <tr>\n" + '                                <td class="tablet-icon">HTC One</td>\n' + '                                <td class="phone-icon">Nexus One</td>\n' + "                            </tr>\n" + "                            <tr>\n" + '                                <td class="phone-icon">HTC Evo</td>\n' + '                                <td class="tablet-icon">Galaxy Tab</td>\n' + "                            </tr>\n" + "                            </tbody>\n" + "       
                  </table>\n" + "\n" + "                    </section>\n" + "\n" + '                    <section class="span4">\n' + "                        <h5>Slowest Carriers</h5>\n" + '                        <ol class="asc-light slow-carriers grow">\n' + "                            <li>Verizon</li>\n" + "                            <li>Sprint</li>\n" + "                            <li>TMobile</li>\n" + "                            <li>AT&amp;T</li>\n" + "                        </ol>\n" + "                    </section>\n" + "\n" + '                    <section class="span4">\n' + "                        <h5>Problematic OS Versions</h5>\n" + '                        <ol class="asc-light prob-os">\n' + "                            <li>Android 2.3</li>\n" + "                            <li>Android 2.3</li>\n" + "                            <li>Android 2.3</li>\n" + "                            <li>Android 2.3</li>\n" + "                        </ol>\n" + "                    </
 section>\n" + "                </div>\n" + "            </div>\n" + "        </div>\n" + "\n" + "    </div>\n" + "</section>\n" + "\n" + "<!-- sessions sparklines row -->\n" + '<section class="row-fluid trouble-makers">\n' + '    <div class="span12">\n' + "\n" + '        <ul class="span2 info-details fixed unstyled">\n' + '            <li class="title">Sessions</li>\n' + '            <li class="secondary">Over Past Hour</li>\n' + "        </ul>\n" + "\n" + '        <div class="span10">\n' + '            <span class="span12 sessions-bar"></span>\n' + "        </div>\n" + "\n" + "    </div>\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/app-usage.html", "<demo-data></demo-data>\n" + '<page-title icon="&#128202;" title="App Usage"></page-title>\n' + "\n" + '<div class="page-filters">\n' + "  <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + "\n" + "\n" + '<div ng-init="appUsageSetup()">\n' + "\n" + "\n" + "  <!-- errors and crashes total row -->\n" + '  <section class="row-fluid api-perf-charts">\n' + "\n" + '    <div class="span12">\n' + '      <h2 class="title chart">Active Sessions Count {{selectedChartCriteria.chartName}}</h2>\n' + '      <!--step: <input ng-model="apptest.step" width="5" style="width: 20px" />-->\n' + "\n" + '      <div ng-include="\'performance/includes/no-data.html\'" ng-if="chartDataWaiting || !chartDataPresent"></div>\n' + "\n" + '      <div class="main-chart-holder" ng-if="chartDataPresent">\n' + '      <chart id="sessionTotals" class="anim-chart" ng-if="selectedChartCriteria.chartName === \'Overview\'"\n'
  + '             chartdata="appUsageCharts.totals"\n' + '             type="line"\n' + "             xAxisLabel=\"return Highcharts.dateFormat('%a, %H:%M', this.value);\"\n" + '             xAxisStep="3"></chart>\n' + "\n" + '      <chart id="sessionTotalsBar" class="anim-chart" ng-if="selectedChartCriteria.chartName !== \'Overview\'"\n' + '             chartdata="appUsageCharts.totals"\n' + '             type="column"></chart>\n' + "      </div>\n" + '      <div class="row-fluid app-summary-data">\n' + '        <div class="span4">\n' + '          <infobox datasrc="appUsageCharts.summary.totalSessions"\n' + '                   currentcompare="appUsageCharts.summary.currentCompare"\n' + '                   title="Total Sessions"\n' + '                   class="usage"></infobox>\n' + "        </div>\n" + "\n" + '        <div class="span4">\n' + '          <infobox datasrc="appUsageCharts.summary.maxConcurrentSessions"\n' + '                   currentcompare="appUsageCharts.summary.cur
 rentCompare"\n' + '                   title="Max Concurrent Sessions"\n' + '                   class="usage"></infobox>\n' + "        </div>\n" + "\n" + '        <div class="span4">\n' + '          <infobox datasrc="appUsageCharts.summary.totalUniqueUsers"\n' + '                   currentcompare="appUsageCharts.summary.currentCompare"\n' + '                   title="Total Unique Users"\n' + '                   class="usage"></infobox>\n' + "        </div>\n" + "      </div>\n" + "\n" + "    </div>\n" + "\n" + "\n" + "  </section>\n" + "\n" + '  <section class="row-fluid api-issues" ng-if="selectedChartCriteria.chartName === \'Overview\'">\n' + '    <div class="span6">\n' + "\n" + '      <ul class="span12 info-details unstyled">\n' + '        <li class="title pie-label">App Version</li>\n' + "      </ul>\n" + '      <div class="span12 app-usage-content">\n' + '        <chart id="appVersion" class="anim-chart"\n' + '               chartdata="appUsageCharts.appVersion.chart"\n' + '    
            type="pie" style="max-width:60%;margin:0 0 0 -5%;height:300px"\n' + '               titleicon="&#128202;"\n' + '               titleiconclass="apichart"\n' + '               titlecolor="rgba(27,112,160,0.4)"\n' + '               titleimagetop="-6%"\n' + '               titleimageleft="-5%"></chart>\n' + '        <table class="table">\n' + "          <thead>\n" + "          <tr>\n" + "            <th>App Version</th>\n" + "          </tr>\n" + "          </thead>\n" + "          <tbody>\n" + '          <tr ng-repeat="app in appUsageCharts.appVersion.data.chartData">\n' + '            <td class="graph-row" >\n' + '              <div class="bar"></div>\n' + "              {{app.attribute}}\n" + "            </td>\n" + '            <td class="count">{{app.percentage | number:0}}%</td>\n' + "          </tr>\n" + "          </tbody>\n" + "        </table>\n" + "      </div>\n" + "\n" + "    </div>\n" + "\n" + '    <div class="span6">\n' + "\n" + '      <ul class="span12 info-de
 tails unstyled">\n' + '        <li class="title pie-label">Device Platform</li>\n' + "      </ul>\n" + "\n" + '      <div class="span12 app-usage-content">\n' + '        <chart id="devicePlatform" class="anim-chart"\n' + '               chartdata="appUsageCharts.devicePlatform.chart"\n' + '               type="pie" style="max-width:60%;margin:0 0 0 -5%;height:300px"\n' + '               titleicon="&#128202;"\n' + '               titleiconclass="apichart"\n' + '               titlecolor="rgba(27,112,160,0.4)"\n' + '               titleimagetop="-6%"\n' + '               titleimageleft="-5%"></chart>\n' + '        <table class="table">\n' + "          <thead>\n" + "          <tr>\n" + "            <th>Platform</th>\n" + "          </tr>\n" + "          </thead>\n" + "          <tbody>\n" + "\n" + '          <tr ng-repeat="app in appUsageCharts.devicePlatform.data.chartData">\n' + '            <td class="graph-row" >\n' + '              <div class="bar"></div>\n' + "              {{app
 .attribute}}\n" + "            </td>\n" + '            <td class="count">{{app.percentage | number:0}}%</td>\n' + "          </tr>\n" + "          </tbody>\n" + "        </table>\n" + "      </div>\n" + "\n" + "    </div>\n" + "  </section>\n" + "\n" + "\n" + '  <section class="row-fluid" ng-if="selectedChartCriteria.chartName === \'Overview\'">\n' + '    <div class="span6 pareto-charts">\n' + '          <h2 class="title">Sessions by Device Model</h2>\n' + "\n" + '          <chart id="sessionsByModel" class="anim-chart"\n' + '                 chartdata="appUsageCharts.sessionsByModel"\n' + '                 type="column"\n' + '                 height="300"></chart>\n' + "    </div>\n" + "\n" + '    <div class="span6 pareto-charts">\n' + '      <h2 class="title">Sessions by OS Versions</h2>\n' + "\n" + '      <chart id="sessionsByModel" class="anim-chart"\n' + '             chartdata="appUsageCharts.sessionsByPlatform"\n' + '             type="column"\n' + '             height="300">
 </chart>\n' + "    </div>\n" + "  </section>\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/beta-config.html", "<div>\n" + '    <page-title icon="&#59190;" title="Beta Testing Configs"></page-title>\n' + "\n" + "\n" + '      <div class="row-fluid" >\n' + "\n" + '        <div class="span12">\n' + "\n" + '          <form class="form-horizontal configs">\n' + '            <div class="control-group">\n' + '              <slidecheckbox label="Enable Device Level Override" data="configData.deviceLevelOverrideEnabled"></slidecheckbox>\n' + "            </div>\n" + "\n" + '            <div class="control-group">\n' + '              <label class="control-label">Matching Apigee Device Ids (one Id per line):</label>\n' + '              <div class="controls">\n' + "                  <textarea ng-model=\"deviceIdFilters\" ng-blur=\"updateFilter(deviceIdFilters,'deviceIdFilters','DEVICE_ID')\"></textarea>\n" + "              </div>\n" + "            </div>\n" + "\n" + '            <div class="control-group">\n' + '              <label class="contr
 ol-label">Matching Telephone Numbers (Android Only):</label>\n' + '              <div class="controls">\n' + "                  <textarea ng-model=\"deviceNumberFilters\" ng-blur=\"updateFilter(deviceNumberFilters,'deviceNumberFilters','DEVICE_NUMBER')\"></textarea>\n" + "              </div>\n" + "            </div>\n" + "\n" + '            <h2 class="title">Monitoring Configs</h2>\n' + "\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Enable Log Capturing" data="configData.deviceLevelAppConfig.enableLogMonitoring"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label">Log Capture Levels</label>\n' + '              <div class="controls">\n' + '                <select ng-model="betaLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(betaLogLevel,\'deviceLevelAppConfig\')"></select>\n' + "              </div>\n" + "            </div>\n" + '
             <div class="control-group">\n' + '              <slidecheckbox label="Enable Network Monitoring" data="configData.deviceLevelAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Enable Device Data Capture" data="configData.deviceLevelAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + "\n" + '              <slidecheckbox label="Read Location" data="configData.deviceLevelAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read IMEI" data="configData.deviceLevelAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Device Model" data="configData.deviceLevelAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Network Carrier" data="configData.
 deviceLevelAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + '              <slidecheckbox label="Read Apigee Device ID" data="configData.deviceLevelAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + '              <div class="controls">\n' + '                <input type="text" id="inputUploadInt" ng-model="configData.deviceLevelAppConfig.agentUploadIntervalInSeconds">\n' + "              </div>\n" + "            </div>\n" + '            <div class="control-group">\n' + '              <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + '              <div class="controls">\n' + '                <input type="text" id="inputSampRate" ng-model="configData.deviceLevelAppConfig.samplingRate">\n' + "              </div>\n" + "            <
 /div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Upload When Roaming" data="configData.deviceLevelAppConfig.enableUploadWhenRoaming"></slidecheckbox>\n' + "            </div>\n" + '            <div class="control-group">\n' + '              <slidecheckbox label="Upload When Not on WIFI" data="configData.deviceLevelAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + "            </div>\n" + "\n" + '            <h2 class="title">Application Specific Configs</h2>\n' + '              <div class="row-fluid"  >\n' + '                  <div class="span3" style="margin-right: 12px;">Tag</div>\n' + '                  <div class="span3" style="margin-right: 15px;">Key</div>\n' + '                  <div class="span3">Value</div>\n' + "              </div>\n" + '            <div class="form-inline" ng-repeat="config in deviceLevelConfigParameters">\n' + '              <input name="category" type="text" class="input-large" ng-model="config.tag" re
 quired>\n' + '              <input name="key" type="text" class="input-large" ng-model="config.paramKey"  required> =\n' + '              <input name="value" type="text" class="input-large" ng-model="config.paramValue" required>\n' + '              <span class="hide">{{config.index = ($index + 1)}}</span>\n' + '              <button class="btn" ng-click="addRemoveConfig(config,\'deviceLevelConfigParameters\')" ng-show="deviceLevelConfigParameters.length != ($index + 1)">-</button>\n' + '              <button class="btn" ng-click="addRemoveConfig(config,\'deviceLevelConfigParameters\')" ng-show="deviceLevelConfigParameters.length == ($index + 1)">+</button>\n' + "            </div>\n" + "            <hr/>\n" + '            <button type="submit" class="btn btn-primary " ng-click="saveData(\'deviceLevelConfigParameters\')">Save Changes</button>\n' + "\n" + "          </form>\n" + "\n" + "        </div>\n" + "\n" + "\n" + "      </div>\n" + "\n" + "    </div>\n" + "\n" + "\n" + "\n" + "
 </div>\n" + "\n" + "\n");
-        $templateCache.put("performance/checkbox-template.html", "<div>\n" + '<label class="control-label">{{label}}</label>\n' + '<div class="controls">\n' + '  <div class="toggle-form">\n' + '    <input type="checkbox" class="check" ng-model="data"><b class="b switch"></b>\n' + '    <b class="b track"></b></div>\n' + "</div>\n" + "</div>");
-        $templateCache.put("performance/configure.html", "<div>\n" + "\n" + '<section class="row-fluid">\n' + "\n" + '  <div class="span12">\n' + "\n" + '    <h2 class="chart-title">{{configData.appName}}</h2>\n' + "\n" + '    <div class="row-fluid" >\n' + "\n" + '      <div class="span6">\n' + "\n" + '        <form class="form-horizontal">\n' + '          <div class="control-group">\n' + '            <label class="control-label" for="inputAppId">App ID</label>\n' + '            <div class="controls">\n' + '              <input type="text" id="inputAppId" ng-model="configData.instaOpsApplicationId">\n' + "            </div>\n" + "          </div>\n" + '          <div class="control-group">\n' + '            <div class="controls">\n' + '              <label class="checkbox">\n' + '                <input type="checkbox" ng-model="configData.monitoringDisabled"> monitoringDisabled\n' + "              </label>\n" + '              <button type="submit" class="btn">Sign in</button>\n' + "
             </div>\n" + "          </div>\n" + "        </form>\n" + "\n" + "      </div>\n" + "\n" + "\n" + "    </div>\n" + "\n" + "  </div>\n" + "\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/custom-events.html", '<h1 class="title"><i class="pictogram title">&#9716;</i> Custom Events</h1>\n' + "\n" + "<div ng:include=\"'performance/includes/time-filters.html'\"></div>");
-        $templateCache.put("performance/default-config.html", "<div>\n" + '    <page-title icon="&#128214;" title="Default Configs"></page-title>\n' + "\n" + "\n" + '    <div class="row-fluid" >\n' + '      <div class="span12">\n' + '        <h2 class="title">Monitoring Configs</h2>\n' + '        <form class="form-horizontal configs">\n' + '          <div class="control-group">\n' + '            <slidecheckbox label="Enable Log Capturing" data="configData.defaultAppConfig.enableLogMonitoring"></slidecheckbox>\n' + "          </div>\n" + '          <div class="control-group">\n' + '            <label class="control-label">Log Capture Levels</label>\n' + '            <div class="controls">\n' + '              <select ng-model="appConfigLogLevel" ng-options="l.label for l in logLevels" ng-change="updateLogLevel(appConfigLogLevel,\'defaultAppConfig\')"></select>\n' + "            </div>\n" + "          </div>\n" + '          <div class="control-group">\n' + '            <slidecheckbox l
 abel="Enable Network Monitoring" data="configData.defaultAppConfig.networkMonitoringEnabled"></slidecheckbox>\n' + "          </div>\n" + '          <div class="control-group">\n' + '            <slidecheckbox label="Enable Device Data Capture" data="configData.defaultAppConfig.sessionDataCaptureEnabled"></slidecheckbox>\n' + "          </div>\n" + '          <div class="control-group">\n' + "\n" + '            <slidecheckbox label="Read Location" data="configData.defaultAppConfig.locationCaptureEnabled"></slidecheckbox>\n' + "\n" + '            <slidecheckbox label="Read IMEI" data="configData.defaultAppConfig.imeicaptureEnabled"></slidecheckbox>\n' + "\n" + '            <slidecheckbox label="Read Device Model" data="configData.defaultAppConfig.deviceModelCaptureEnabled"></slidecheckbox>\n' + "\n" + '            <slidecheckbox label="Read Network Carrier" data="configData.defaultAppConfig.networkCarrierCaptureEnabled"></slidecheckbox>\n' + "\n" + '            <slidecheckbox label="
 Read Apigee Device ID" data="configData.defaultAppConfig.deviceIdCaptureEnabled"></slidecheckbox>\n' + "\n" + "          </div>\n" + '          <div class="control-group">\n' + '            <label class="control-label" for="inputUploadInt">Data Upload Interval (in Seconds)</label>\n' + '            <div class="controls">\n' + '              <input type="text" id="inputUploadInt" ng-model="configData.defaultAppConfig.agentUploadIntervalInSeconds">\n' + "            </div>\n" + "          </div>\n" + '          <div class="control-group">\n' + '            <label class="control-label" for="inputSampRate">Sampling Rate (in Percentage)</label>\n' + '            <div class="controls">\n' + '              <input type="text" id="inputSampRate" ng-model="configData.defaultAppConfig.samplingRate">\n' + "            </div>\n" + "          </div>\n" + '          <div class="control-group">\n' + '            <slidecheckbox label="Upload When Roaming" data="configData.defaultAppConfig.enableUplo
 adWhenRoaming"></slidecheckbox>\n' + "          </div>\n" + '          <div class="control-group">\n' + '            <slidecheckbox label=" Upload When Not on WIFI" data="configData.defaultAppConfig.enableUploadWhenMobile"></slidecheckbox>\n' + "          </div>\n" + "\n" + '            <h2 class="title">Application Specific Configs</h2>\n' + "\n" + '            <div class="row-fluid"  >\n' + '               <div class="span3" style="margin-right: 12px;">Tag</div>\n' + '                <div class="span3" style="margin-right: 15px;">Key</div>\n' + '                <div class="span3">Value</div>\n' + "            </div>\n" + '            <div class="form-inline " ng-repeat="config in defaultAppConfigParameters">\n' + '                    <input name="category" type="text" class="input-large" ng-model="config.tag" required>\n' + '                    <input name="key" type="text" class="input-large" ng-model="config.paramKey" required> =\n' + '                    <input name="value" typ
 e="text" class="input-large" ng-model="config.paramValue" required>\n' + '                    <span class="hide">{{config.index = ($index + 1)}}</span>\n' + '                    <button class="btn" ng-click="addRemoveConfig(config,\'defaultAppConfigParameters\')"\n' + '                            ng-show="defaultAppConfigParameters.length != ($index + 1)">-\n' + "                    </button>\n" + '                    <button class="btn" ng-click="addRemoveConfig(config,\'defaultAppConfigParameters\')"\n' + '                            ng-show="defaultAppConfigParameters.length == ($index + 1)">+\n' + "                    </button>\n" + "            </div>\n" + "          <hr/>\n" + '          <button type="submit" class="btn btn-primary " ng-click="saveData(\'defaultAppConfigParameters\')">Save Changes</button>\n' + "        </form>\n" + "\n" + "      </div>\n" + "\n" + "\n" + "    </div>\n" + "\n" + "  </div>\n" + "\n" + "\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/demo-data.html", '<div id="demo-data-ctrl" ng-if="dataVals.showDemoBar" ng-cloak class="demo-holder">\n' + '  <div class="alert alert-demo alert-animate">\n' + '    <div class="toggle">\n' + '      <input type="checkbox" class="check" ng-model="dataVals.demoData">\n' + '      <b class="b switch"></b>\n' + '      <b class="b track"></b>\n' + "    </div>\n" + "\n" + '    <div class="demo-text">\n' + "      <i class=\"pictogram\">{{dataVals.demoData ? '&#128165;' : '&#59141;'}}</i>You are currently viewing <span class=\"bold\">{{dataVals.demoData ? 'demo data' : 'live data for your ' + currentApp + ' app'}}</span>.\n" + "    </div>\n" + "\n" + "    <div class=\"demo-holder-content\">DEMO MODE {{dataVals.demoData ? 'ON' : 'OFF'}}</div>\n" + "  </div>\n" + "</div>");
-        $templateCache.put("performance/errors-crashes.html", "<demo-data></demo-data>\n" + '<div ng-init="errorsCrashesSetup()">\n' + '<page-title icon="&#9889;" title="Errors &amp; Crashes"></page-title>\n' + "\n" + '<div class="page-filters">\n' + "  <span ng-include=\"'performance/includes/time-filters.html'\"></span>\n" + "</div>\n" + "\n" + "\n" + "\n" + "<!-- errors and crashes total row -->\n" + '<div id="popupHolder"></div>\n' + '<div id="pointPopupTemp">\n' + '<div id="pointPopup" class="hide" style="position:absolute" ng-mousedown="popup.startMoving(event);" ng-mouseup="popup.stopMoving();">\n' + '  <h3><i class="pictogram sub">&#9889;</i><span></span></h3><a class="pull-right" ng-click="hidePopup($event)">Close</a>\n' + '  <div class="content">\n' + "\n" + "  </div>\n" + '  <div class="footer">\n' + "    <a ng-click=\"scrollTo('logs')\">View all logs</a>\n" + "  </div>\n" + "</div>\n" + "</div>\n" + "\n" + '<section class="row-fluid">\n' + "\n" + "\n" + "\n" + "</section
 >\n" + '<section class="row-fluid">\n' + "\n" + "<div ng-class=\"ecDetailedView.value == 1 ? 'span8' : 'span12'\">\n" + "\n" + '  <h2 class="title with-icons">{{selectedChartCriteria.chartName}} <div class="pull-right">\n' + '    <a ng-if="selectedChartCriteria.chartName === \'Overview\'" ng-click="convertChartType(\'convertLineChart\')"><i class="pictogram">&#128200;</i>line</a>\n' + '    <a ng-if="selectedChartCriteria.chartName === \'Overview\'" ng-click="convertChartType(\'convertAreaChart\')"><i class="pictogram">&#128318;</i>area</a></div></h2>\n' + "\n" + '  <div ng-include="\'performance/includes/no-data.html\'" ng-if="!chartDataPresent"></div>\n' + "\n" + '  <div class="main-chart-holder" ng-if="chartDataPresent">\n' + "\n" + '  <chart id="ecTotals" class="anim-chart"\n' + '         chartdata="ecCharts.totals"\n' + '         type="column"></chart>\n' + "  </div>\n" + "  <!--errors and crashes only (combined view)-->\n" + '  <div class="row-fluid summary-data errors-crashes"
  ng-show="ecDetailedView.value === 1">\n' + "\n" + '    <div class="span6">\n' + '      <infobox datasrc="ecCharts.summary.totalAppErrors"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total App Errors"\n' + '               class="errors"></infobox>\n' + "    </div>\n" + "\n" + '    <div class="span6">\n' + '      <infobox datasrc="ecCharts.summary.totalCrashes"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total Crashes"\n' + '               class="crashes"></infobox>\n' + "    </div>\n" + "\n" + "  </div>\n" + "\n" + "  <!--errors only-->\n" + '  <div class="row-fluid summary-data errors" ng-if="ecDetailedView.value === 2">\n' + "\n" + '    <div class="span4">\n' + '      <infobox datasrc="ecCharts.summary.totalCriticalErrors"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total Critical"\n' + '               class="critical"></
 infobox>\n' + "    </div>\n" + "\n" + '    <div class="span4">\n' + '      <infobox datasrc="ecCharts.summary.totalErrors"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total Errors"\n' + '               class="errors"></infobox>\n' + "    </div>\n" + "\n" + '    <div class="span4">\n' + '      <infobox datasrc="ecCharts.summary.totalWarnings"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total Warnings"\n' + '               class="warnings"></infobox>\n' + "    </div>\n" + "  </div>\n" + "\n" + "  <!--crashes only-->\n" + '  <div class="row-fluid summary-data crashes" ng-if="ecDetailedView.value === 3">\n' + "\n" + "\n" + "\n" + '    <div class="span12">\n' + '      <infobox datasrc="ecCharts.summary.totalCrashes"\n' + '               currentcompare="ecCharts.summary.currentCompare"\n' + '               title="Total Crashes"\n' + '               class="crashes"></infobox>\n' + " 
    </div>\n" + "\n" + "\n" + "  </div>\n" + "\n" + "</div>\n" + "\n" + '<div class="span4 crash-summary" ng-if="ecDetailedView.value === 1">\n' + '  <h2 class="title">Crash Summary (Top 5)</h2>\n' + "\n" + '  <div class="row-fluid" style="text-align:center">\n' + "\n" + "\n" + '      <ul class="crashes-pie span12 info-details unstyled">\n' + '        <li class="small">App Version</li>\n' + "\n" + "\n" + '      <li style="width:250px;margin:10px auto 0 auto;">\n' + '        <chart id="appVersion"\n' + '               class="anim-chart"\n' + '               chartdata="ecCharts.appVersion.chart"\n' + '               type="pie" style="height:260px"\n' + '               titleicon="&#9889;"\n' + '               titleiconclass="chart"\n' + '               titlecolor="rgba(255,3,3,0.5)"\n' + '               titleimagetop="-6%"\n' + '               titleimageleft="-2%"></chart>\n' + "      </li>\n" + "\n" + "      </ul>\n" + "\n" + '      <ul class="crashes-pie span12 info-details unstyled">
 \n' + '        <li class="small">Platforms</li>\n' + "\n" + "\n" + '      <li style="width:250px;margin:10px auto 0 auto;">\n' + '        <chart id="appVersion"\n' + '               class="anim-chart"\n' + '               chartdata="ecCharts.devicePlatform.chart"\n' + '               type="pie" style="height:260px"\n' + '               titleicon="&#9889;"\n' + '               titleiconclass="chart"\n' + '               titlecolor="rgba(255,3,3,0.5)"\n' + '               titleimagetop="-6%"\n' + '               titleimageleft="-2%"></chart>\n' + "      </li>\n" + "      </ul>\n" + "\n" + "  </div>\n" + "</div>\n" + "\n" + "</section>\n" + '<section class="row-fluid" ng-if="ecDetailedView.value === 1">\n' + '  <div class="span12 pareto-charts">\n' + "\n" + '    <div ng-class="row-fluid">\n' + "\n" + '      <div id="deviceModelCrashes1" ng-if="rawLogs.rawDataType === \'logRawData\'" class="span6">\n' + '        <h2 class="title">Crashes by Device Models</h2>\n' + "\n" + '        <chart
  id="deviceModels1"\n' + '               class="anim-chart"\n' + '               chartdata="ecCharts.deviceModels"\n' + '               type="column"\n' + '                height="300"></chart>\n' + "\n" + "      </div>\n" + "\n" + "\n" + '      <div ng-if="rawLogs.rawDataType === \'logRawData\'" class="span6">\n' + '        <h2 class="title">Crashes by OS Versions</h2>\n' + "\n" + '        <chart id="platformVersions"\n' + '               class="anim-chart"\n' + '               chartdata="ecCharts.platformVersions"\n' + '               type="column"\n' + '               height="300"></chart>\n' + "      </div>\n" + "\n" + "    </div>\n" + "\n" + "  </div>\n" + "</section>\n" + "\n" + '<balloon direction="south" ng-if="!chartDataPresent && logDataPresent">\n' + "  Scroll down to see log data sent by your SDK.\n" + "</balloon>\n" + "\n" + '<section class="row-fluid">\n' + '  <div class="span12">\n' + "\n" + "    <!--http://blogs.lessthandot.com/index.php/WebDev/UIDevelopment/AJAX/ang
 ularjs-and-ng-grid-->\n" + '    <a name="logs"></a>\n' + '    <div class="row-fluid log-search" ng-controller="RawLogCtrl">\n' + '      <div class="span12">\n' + '        <h2 ng-show="rawLogs.rawDataType === \'logRawData\'" class="title">Raw Log Search</h2>\n' + "\n" + '        <h2 ng-hide="rawLogs.rawDataType === \'logRawData\'" class="title">Crash Log Search</h2>\n' + "\n" + '        <form ng-switch="rawLogs.rawDataType">\n' + "\n" + '          <div class="input-append span8">\n' + "\n" + '            <input ng-show="rawLogs.rawDataType === \'logRawData\'" type="text" placeholder="log search..."\n' + '                   ng-model="rawLogSearch.logMessage" class="input-xxlarge" ng-change="loadMoreLogs()">\n' + '            <input ng-hide="rawLogs.rawDataType === \'logRawData\'" type="text" placeholder="crash log search..."\n' + '                   ng-model="rawLogSearch.crashSummary" class="input-xxlarge" ng-change="loadMoreLogs()">\n' + '            <button type="button" class="btn
 " ng-click="rawLogSearchShowAdv=!rawLogSearchShowAdv">{{rawLogSearchShowAdv ? \'Hide\' : \'Show\'}} Advanced</button>\n' + "\n" + "          </div>\n" + '          <div class="span4 text-right" ng-if="rawLogs.rawData.length === 100 || rawLogSearch.pageNumber > 0">\n' + "            {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.rawData.length) : (rawLogSearch.pageNumber + 1) * rawLogs.rawData.length}}\n" + '            <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram">&#59229;</i></a>\n' + '            <a class="btn btn-primary toolbar" ng-disabled="rawLogs.rawData.length !== 100" ng-click="rawLogs.rawData.length === 100 ? nextPage() : \'\'"><i class="pictogram">&#59230;</i></a>\n' + "          </div>\n" + "        </form>\n" + '        <form class="form-inline adv-rawlog-form" ng-show="rawLogSearchShowAd
 v">\n' + '          <br style="clear:both"/>\n' + '          <div class="input-prepend">\n' + '            <span class="add-on">Tag</span>\n' + '            <input class="input-small" type="text" ng-model="rawLogSearch.tag"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0].tag}}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <div class="input-prepend" ng-show="rawLogs.rawDataType === \'logRawData\'">\n' + '            <span class="add-on">Log Level</span>\n' + '            <input class="input-mini" type="text" ng-model="rawLogSearch.logLevel"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0].logLevel}}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <div class="input-prepend">\n' + '            <span class="add-on">Device Model</span>\n' + '            <input class="input-small" type="text" ng-model="rawLogSearch.deviceModel"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0].deviceModel
 }}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <div class="input-prepend">\n' + '            <span class="add-on">Platform</span>\n' + '            <input class="input-small" type="text" ng-model="rawLogSearch.devicePlatform"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0].devicePlatform}}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <div class="input-prepend">\n' + '            <span class="add-on">OS Version</span>\n' + '            <input class="input-small" type="text" ng-model="rawLogSearch.deviceOperatingSystem"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0].deviceOperatingSystem}}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <div class="input-prepend">\n' + '            <span class="add-on">Device ID</span>\n' + '            <input class="input-small" type="text" ng-model="rawLogSearch.deviceId"\n' + '                   ng-attr-placeholder="{{rawLogs.rawData[0
 ].deviceId}}..." ng-change="loadMoreLogs()">\n' + "          </div>\n" + '          <button type="submit" class="btn"\n' + "                  ng-click=\"rawLogSearch.tag='';rawLogSearch.deviceModel='';rawLogSearch.devicePlatform='';rawLogSearch.deviceOperatingSystem='';rawLogSearch.deviceId='';loadMoreLogs()\">\n" + "            Clear All Advanced\n" + "          </button>\n" + "        </form>\n" + '        <table class="table table-striped table-bordered raw-log-table">\n' + "          <thead>\n" + "          <tr>\n" + '            <th class="log-time-header"><div class="raw-data-text">Time</div></th>\n' + '            <th class="message-header"><div class="raw-data-text">Message</div>\n' + "\n" + "\n" + "            </th>\n" + "          </tr>\n" + "          </thead>\n" + "          <tbody>\n" + "          <tr  ng-repeat=\"log in rawLogs.rawData | orderBy:'timeStamp':true  | rawLogFilter:rawLogSearch:['logMessage','crashSummary']\">\n" + '            <td class="log-time-holder">
 \n' + "              <div>\n" + "              <span ng-class=\"rawLogs.rawDataType === 'logRawData' ? 'log-time1' : 'log-time2'\">{{log.timeStamp | date:'M-dd-yyyy HH:mm:ss'}}</span>\n" + '            <span ng-if="rawLogs.rawDataType === \'logRawData\'" class="log-level {{log.logLevel}}">\n' + "                {{log.logLevel === 'D' ? 'Debug' : ''}}\n" + "                {{log.logLevel === 'A' ? 'Assert' : ''}}\n" + "                {{log.logLevel === 'I' ? 'Info' : ''}}\n" + "                {{log.logLevel === 'W' ? 'Warn' : ''}}\n" + "                {{log.logLevel === 'E' ? 'Error' : ''}}\n" + "\n" + "              </span>\n" + "              </div>\n" + "            </td>\n" + "            <td >\n" + "              <span ng-if=\"rawLogs.rawDataType === 'logRawData'\">{{log.logMessage}}</span>\n" + "              <span ng-if=\"rawLogs.rawDataType !== 'logRawData'\">{{log.crashSummary ? log.crashSummary : 'No crash summary available'}}</span>\n" + "\n" + '              <div class
 ="row-meta">\n' + "                <span ng-show=\"rawLogs.rawDataType === 'logRawData'\">\n" + '                  <span class="label">Tag:</span>\n' + '                  <span class="value">{{log.tag}}</span>\n' + '                  <span class="label">Network Type:</span>\n' + '                  <span class="value">{{log.networkType}}</span>\n' + '                  <span class="label">Carrier:</span>\n' + '                  <span class="value">{{log.networkCarrier}}</span>\n' + "                </span>\n" + '                <span class="label">Device ID:</span>\n' + '                <span class="value">{{log.deviceId}}</span>\n' + '                <span class="label">Platform:</span>\n' + '                <span class="value">{{log.devicePlatform}}</span>\n' + '                <span class="label">OS:</span>\n' + '                <span class="value">{{log.deviceOperatingSystem}}</span>\n' + '                <span class="label">Device Model:</span>\n' + '                <span class="
 value">{{log.deviceModel}}</span>\n' + '                <span class="value" ng-hide="rawLogs.rawDataType === \'logRawData\'"><a ng-href="{{log.crashLogUrl}}">Download Crash Log</a></span>\n' + "              </div>\n" + "            </td>\n" + "          </tr>\n" + "          </tbody>\n" + "        </table>\n" + '        <div class="row-fluid">\n' + '          <div class="input-append span8">\n' + "\n" + "\n" + "          </div>\n" + '          <div class="span4 text-right" ng-if="rawLogs.rawData.length === 100 || rawLogSearch.pageNumber > 0">\n' + "            {{rawLogSearch.pageNumber === 0 ? 1 : rawLogSearch.pageNumber * 100}} - {{rawLogSearch.pageNumber === 0 ? (1 * rawLogs.rawData.length) : (rawLogSearch.pageNumber + 1) * rawLogs.rawData.length}}\n" + '            <a class="btn btn-primary toolbar" ng-disabled="rawLogSearch.pageNumber === 0" ng-click="rawLogSearch.pageNumber > 0 ? prevPage() : \'\'"><i class="pictogram">&#59229;</i></a>\n' + '            <a class="btn btn-prima
 ry toolbar" ng-disabled="rawLogs.rawData.length !== 100" ng-click="rawLogs.rawData.length === 100 ? nextPage() : \'\'"><i class="pictogram">&#59230;</i></a>\n' + "          </div>\n" + "        </div>\n" + "      </div>\n" + "\n" + "    </div>\n" + "  </div>\n" + "</section>\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/errors-crashes/crashes.html", "");
-        $templateCache.put("performance/errors-crashes/errors.html", "");
-        $templateCache.put("performance/event-config.html", "<div>\n" + "\n" + '  <section class="row-fluid">\n' + "\n" + '    <div class="span12">\n' + "\n" + '      <h1 class="title"><i class="pictogram title">&#8646;</i> Event Configs</h1>\n' + "\n" + '      <div class="row-fluid" >\n' + "\n" + '        <div class="span12">\n' + '          <h2 class="title"></h2>\n' + '          <form class="form-horizontal">\n' + "\n" + "          </form>\n" + "\n" + "        </div>\n" + "\n" + "\n" + "      </div>\n" + "\n" + "    </div>\n" + "\n" + "  </section>\n" + "\n" + "</div>\n" + "\n" + "\n");
-        $templateCache.put("performance/includes/info-box.html", '<ul class="info-details unstyled">\n' + '  <li class="title small">{{title}}</li>\n' + '  <li class="top-5-crash info-box">\n' + '    <div class="summary-container {{datasrc.color}}">\n' + "      {{datasrc.label}}\n" + '      <div class="compare-data" ng-show="currentcompare != \'NOW\'">\n' + "        <span ng-class=\"currentcompare\">({{currentcompare == 'YESTERDAY' && 'Yesterday' || 'Last Week'}}) {{datasrc.value}}</span>\n" + "      </div>\n" + "    </div>\n" + "  </li>\n" + "</ul>");
-        $templateCache.put("performance/includes/no-data.html", '<div class="main-chart-holder no-data">\n' + '  <bsmodal id="needHelp"\n' + '           title="Need Help?"\n' + '           close="hideModal"\n' + '           closelabel="Cancel"\n' + '           extrabutton="needHelpDialog"\n' + '           extrabuttonlabel="Get Help"\n' + "           ng-cloak>\n" + "    <p>Do you want to contact support? Support will get in touch with you as soon as possible.</p>\n" + "  </bsmodal>\n" + '  <div class="no-data-msg" >\n' + '    <div class="waiting" ng-if="chartDataWaiting">\n' + '      <div class="bars" id="bar1"></div>\n' + '      <div class="bars" id="bar2"></div>\n' + '      <div class="bars" id="bar3"></div>\n' + "    </div>\n" + '    <div ng-if="!chartDataPresent && !chartDataWaiting && !logDataPresent">\n' + '    <div class="content">\n' + "      No data detected for this time range.\n" + "    </div>\n" + '    <button ng-click="showModal(\'needHelp\')" ng-if="performance.showHelp
 Button" class="btn glow">I have installed the SDK and need help!</button>\n' + '    <div class="content" style="margin: 10px 0 10px 0" ng-if="performance.showHelpButton">\n' + "      or\n" + "    </div>\n" + '    <button ng-click="toggleDemoData()" onclick="this.disabled=true" class="btn btn-primary action">View demo data</button>\n' + "    </div>\n" + "  </div>\n" + "</div>");
-        $templateCache.put("performance/includes/time-filters.html", "<!-- filtering -->\n" + "\n" + "\n" + "  <!-- custom errors-crashes filtering -->\n" + '  <div class="btn-group" ng-if="ecHideChartFilters === true">\n' + '    <a class="btn dropdown-toggle filter-selector action" data-toggle="dropdown">\n' + '      <span class="filter-ec">{{ecDetailedView.label}}</span>\n' + '      <span class="caret"></span>\n' + "    </a>\n" + '    <ul class="dropdown-menu">\n' + '      <li ng-repeat="detailedView in ecDetailedViewList" class="filterItem"><a ng-click="changeEcDetailedView(detailedView)">{{detailedView.label}}</a></li>\n' + "    </ul>\n" + "  </div>\n" + "  <!--common/global monitoring filters-->\n" + '  <div class="btn-group" ng-if="ecHideChartFilters !== true || ecDetailChartFilters === true">\n' + "\n" + '    <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + '      <span class="filter-label">{{selectedChartCriteria.chartName}}</span>\n' + '      <spa
 n class="caret"></span>\n' + "    </a>\n" + '    <ul class="dropdown-menu" chart-filter="chartCriteria">\n' + "    </ul>\n" + "  </div>\n" + '  <div class="btn-group">\n' + '    <a class="btn dropdown-toggle filter-selector" data-toggle="dropdown">\n' + '      <span class="filter-label">{{selectedtimefilter.label}}</span>\n' + '      <span class="caret"></span>\n' + "    </a>\n" + '    <ul class="dropdown-menu" time-filter="timeFilters">\n' + "    </ul>\n" + "  </div>\n" + "  <div class=\"btn-group compare\" ng-class=\"(currentCompare === 'LAST_WEEK') ? 'selected' : ''\">\n" + '    <a class="btn filter-selector" ng-click="compare(\'LAST_WEEK\',false)">\n' + '      <span class="filter-label"><i class="pictogram">&#57347;</i>Compare Last Week</span>\n' + "    </a>\n" + "  </div>\n" + "  <div class=\"btn-group compare\" ng-class=\"(currentCompare === 'YESTERDAY') ? 'selected' : ''\">\n" + '    <a class="btn filter-selector" ng-click="compare(\'YESTERDAY\',false)">\n' + '      <span cla
 ss="filter-label"><i class="pictogram">&#57347;</i>Compare Yesterday</span>\n' + "    </a>\n" + "  </div>\n" + '  <div class="pull-right auto-update-container">\n' + '    <a class="auto-updates" ng-show="showAutoRefresh && !hideAutoupdate" ng-click="toggleAutoUpdate()"><i ng-if="autoUpdate !== null" class="pictogram title" style="width:13px">&#9632;</i><i ng-if="autoUpdate === null" class="pictogram title" style="width:13px">&#9654;</i> Turn auto updates <span ng-if="autoUpdate !== null">off ({{autoUpdateTimer}})</span><span ng-if="autoUpdate === null">on</span></a>\n' + "  </div>\n");
-        $templateCache.put("push/push-config.html", '<div class="content-page">\n' + '    <page-title icon="&#9874;" title="Configuration"></page-title>\n' + "\n" + "\n" + '  <bsmodal id="deleteNotifier"\n' + '           title="Delete Notifier"\n' + '           close="hideModal"\n' + '           closelabel="Cancel"\n' + '           extrabutton="deleteNotifiersDialog"\n' + '           extrabuttonlabel="Delete"\n' + "           ng-cloak>\n" + "    <p>Are you sure you want to delete the notifier(s)?</p>\n" + "  </bsmodal>\n" + "\n" + '  <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + "  <tabs>\n" + '    <pane heading="Apple">\n' + '      <div style="margin-top: 10px;"> <!-- ng-controller="PushConfigCtrl"-->\n' + '        <div class="user-header-title">Apple Push Notification Service</div>\n' + "        <br>\n" + "        A Notifier allows App Services to connect to and 
 deliver a message to a communication provider such as\n" + "        Apple's APNs. Upload Development and Production Certificates (.p12) to set up a bridge between your app\n" + "        and APNs for push notifications on iOS devices.\n" + "\n" + "          For more help: view our\n" + '          <a href="#!/push/getStarted" class="notifications-links">getting started page</a>\n' + "          for more info on how to generate and download an iOS .p12 certificate at the Apple Developer Connection website.\n" + "          <br>\n" + "          <br>\n" + '        <form name="iosNotifierForm" id="iosNotifierForm"  ng-submit="createAppleNotifier()" class="form-horizontal" novalidate>\n' + "\n" + "          <fieldset>\n" + '            <div class="control-group">\n' + '              <label  for="ios-notifier-name"><strong>Name this notifier </strong></label>\n' + '              <div class="">\n' + '                <input type="text" id="ios-notifier-name" required ug-validate ng-model="notif
 ier.appleNotifierName" class="" class="span6">\n' + "                <br>\n" + "                The notifier name is used as the key for push data.  Give this a name that describes the certificate being uploaded.\n" + "              </div>\n" + "            <br>\n" + '              <label  for="ios-cert"><strong>Certificate </strong></label>\n' + '              <div class="">\n' + '                <input type="file" data-file="param.file"  id="ios-cert" />\n' + "              </div>\n" + "            <br>\n" + "              <strong>Environment </strong>\n" + '              <div class="">\n' + '                <select ng-model="notifier.appleEnvironment" required ug-validate id="ios-env">\n' + '                  <option value="development">development</option>\n' + '                  <option value="production">production</option>\n' + "                </select>\n" + "              </div>\n" + "            <br>\n" + "              <strong>Certificate Password</strong>\n" + '         
      <div class="">\n' + '                <input ng-model="notifier.appleCertPassword" type="text"  title="Please enter a password." class="span6" autocomplete="off" placeholder="ex: appledev"/>\n' + "                <br>\n" + "                Only applicable if your certificate is password protected\n" + "              </div>\n" + "            </div>\n" + "\n" + '            <input type="submit" ng-disabled="!iosNotifierForm.$valid" class="btn btn-primary" value="Create Notifier"/>\n' + "          </fieldset>\n" + "        </form>\n" + "\n" + "      </div>\n" + "\n" + "    </pane>\n" + '    <pane heading="Android">\n' + "\n" + '      <div style="margin-top: 10px;">\n' + '        <span class="title">Google Cloud Messaging</span>\n' + "        <br>\n" + "        A Notifier allows App Services to connect to and deliver a message to a communication provider such as\n" + "        Google Cloud Messaging (GCM). Copy and paste your API key to create a bridge between your app\n" + "        
 and GCM for push notifications on Android devices..\n" + "        <br><br>\n" + "\n" + '        For more help: see our <a href="#!/getting-started/setup" class="notifications-links">getting started page</a> page.\n' + "\n" + '        <form id="droidNotifierForm" name="droidNotifierForm" ng-submit="createAndroidNotifier()" class="form-horizontal" novalidate>\n' + "          <fieldset>\n" + '            <div class="control-group">\n' + "              <strong>Name this notifier </strong>\n" + "              <div  >\n" + '                <input ng-model="notifier.androidNotifierName" id="droid-notifier-name" required ug-validate type="text" class="span6" autocomplete="off" placeholder="ex: androidDev"/>\n' + "                <br>\n" + "                The notifier name is used as the key for push data.  Give this a name that describes the API key being uploaded.\n" + "              </div>\n" + "            </div>\n" + "\n" + '            <div class="control-group">\n' + "              <
 strong>API Key </strong>\n" + "              <div  >\n" + '                <input ng-model="notifier.androidNotifierAPIKey" id="droid-key-value" required type="text" class="span6" autocomplete="off" ug-validate/>\n' + "              </div>\n" + "            </div>\n" + '            <input type="submit" href="" class="btn btn-primary" ng-disabled="!droidNotifierForm.$valid"  value="Create Notifier"/>\n' + "          </fieldset>\n" + "          </form>\n" + "      </div>\n" + "\n" + "    </pane>\n" + '    <pane heading="Notifiers">\n' + "\n" + '        <bsmodal id="deleteNotifiers"\n' + '                 title="Are you sure you want to delete the notifiers(s)?"\n' + '                 close="hideModal"\n' + '                 closelabel="Cancel"\n' + '                 extrabutton="deleteNotifiersDialog"\n' + '                 extrabuttonlabel="Delete"\n' + "                 ng-cloak>\n" + "            <fieldset>\n" + '                <div class="control-group">\n' + "                </d
 iv>\n" + "            </fieldset>\n" + "        </bsmodal>\n" + "\n" + '      <span  class="button-strip">\n' + '        <button class="btn btn-primary" ng-disabled="!valueSelected(notifiersCollection._list)" ng-click="deleteNotifiersDialog()">Delete Notifier(s)</button>\n' + "      </span>\n" + '      <table class="table table-striped collection-list">\n' + "        <tbody>\n" + '        <tr class="zebraRows notifications-row">\n' + '          <td style="width: 30px;"><input type="checkbox"  ng-click="selectAllEntities(notifiersCollection._list,this,\'queryBoxesSelected\',true)"></td>\n' + '          <td class="notifications-details bold-header">Provider</td>\n' + '          <td class="notifications-details bold-header">Notifier</td>\n' + "        </tr>\n" + "\n" + '        <tr class="zebraRows notifications-row" ng-repeat="notifier in notifiersCollection._list">\n' + "          <td>\n" + "            <input\n" + '              type="checkbox"\n' + '              ng-value="notifier
 .uuid"\n' + "\n" + '              ng-model="notifier.checked"\n' + "              >\n" + "          </td>\n" + "          <td class=\"details\">{{notifier.get('provider')}}</td>\n" + "          <td class=\"details\">{{notifier.get('name')}}</td>\n" + "        </tr>\n" + "      </table>\n" + "    </pane>\n" + "\n" + "\n" + "  </tabs>\n" + "\n" + "</div>");
-        $templateCache.put("push/push-get-started.html", "\n" + '<div class="content-page">\n' + '    <page-title icon="&#59176;" title="Getting Started"></page-title>\n' + "\n" + "\n" + "\n" + "  <div>\n" + "    <tabs>\n" + '      <pane heading="Apple">\n' + '        <span class="title">Set up Push Notifications for Apple iOS</span>\n' + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_1.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + '              Follow <a target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">the process</a> to generate and download an iOS .p12 certificate at the <a href="https://developer.apple.com/ios/manage/overview/index.action">Apple Developer Connection website</a>.\n' + "            </div>\n" + "          </div>\n" + '          <img style="margin-bottom: -5px;" src="img
 /push/APNS_cert_upload.png">\n' + "        </div>\n" + "\n" + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_2.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + "              Add the certificates to set up your notifiers.\n" + "            </div>\n" + "          </div>\n" + '          <div style="">\n' + '            <a href="#!/push/configuration">Upload a certificate and create the connection to APNs.</a>\n' + "          </div>\n" + '          <img style="margin-left: 50px; margin-bottom: -5px;" src="img/push/APNS_certification.png">\n' + "        </div>\n" + "\n" + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_3.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + "              Compose and schedule a push notification.
 \n" + "            </div>\n" + "          </div>\n" + '          <div style="">\n' + '            <a href="#!/push/sendNotification">Send a push notification.</a>\n' + "          </div>\n" + "          <br><br>\n" + '          <img style="margin-left: 58px; margin-bottom: -5px;" src="img/push/iphone_message.png">\n' + "        </div>\n" + "      </pane>\n" + '      <pane heading="Android">\n' + '        <span class="title">Set up Push Notifications for Google Android</span>\n' + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_1.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + '              Retrieve your API key from the <a href="https://code.google.com/apis/console/" target="_blank">Android API Developer website</a>\n' + "            </div>\n" + "          </div>\n" + '          <img style="margin-bottom: -5px;" src="img/push/google_api_key.png">\n' +
  "        </div>\n" + "\n" + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_2.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + "              Add your API key to set up your notifiers.\n" + "            </div>\n" + "          </div>\n" + '          <div style="">\n' + '            <a href="#!/push/configuration">Copy and paste your Google API Access key.</a>\n' + "          </div>\n" + '          <img style="margin-left: 50px; margin-bottom: -5px;" src="img/push/APNS_certification.png">\n' + "        </div>\n" + "\n" + '        <div class="notifications-get-started">\n' + '          <div class="header">\n' + '            <img src="img/push/step_3.png" style="float: left;padding-right: 10px;">\n' + '            <div style="padding-top: 9px;">\n' + "              Compose and schedule a push notification.\n" + "            </div>\n" + "          </div>\n
 " + '          <div style="">\n' + '            <a href="#!/push/sendNotification">Send a push notification.</a>\n' + "          </div>\n" + "          <br><br>\n" + '          <img style="margin-left: 58px; margin-bottom: -5px;" src="img/push/android-notification.png">\n' + "        </div>\n" + "\n" + "      </pane>\n" + "    </tabs>\n" + "  </div>\n" + "</div>\n");
-        $templateCache.put("push/push-history.html", '<div class="content-page" style="min-height: 500px;">\n' + '    <page-title icon="&#9991;" title="Message History"></page-title>\n' + "\n" + "\n" + "\n" + '  <section class="row-fluid">\n' + '    <div class="span12">\n' + '        <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + "\n" + '        <div class="pull-left" style="margin-top: 10px;">\n' + '          <ul class="nav nav-pills">\n' + '            <li ng-class="selectedHistory.name === option.name ? \'active\' : \'\'" ng-repeat="option in historyList"><a ng-click="showHistory(option)">{{option.name}}</a></li>\n' + "          </ul>\n" + "        </div>\n" + "     </div>\n" + "    </section>\n" + '  <section class="row-fluid">\n' + '    <div class="span12">\n' + '      <div ng-if="notificationCollection._list.length === 0">\n' + "        No messages found\n" + 
 "      </div>\n" + "\n" + '      <div ng-repeat="notification in notificationCollection._list">\n' + '        <div style="border: 1px solid #aaa;">\n' + '            <div class="notifications-header">\n' + '              <div style="float: left">\n' + "                <strong>Send Date:</strong>\n" + "                {{getNotificationStartedDate(notification._data) | date:'EEEE, MMMM d, y h:mm:ss a'}}\n" + '                <div style="margin-top: 10px;">\n' + '                  <img ng-src="{{getStateImage(notification)}}" style="vertical-align:middle;margin-top: -3px;"> {{getStateMessage(notification)}}\n' + "                </div>\n" + "              </div>\n" + '              <div style="float: right; text-align: right;">\n' + '                &nbsp; <a href="" class="notifications-links" ng-click="viewReceipts(notification._data.uuid)">view details</a>\n' + "                <br>Total Sent: {{notification._data.statistics.sent ? notification._data.statistics.sent : 0}} Total Erro
 rs: {{notification._data.statistics.errors ? notification._data.statistics.errors : 0}}\n" + "                <br>\n" + "                <b>UUID</b>:\n" + '                <a href="" ng-click="viewReceipts(\'{{notification._data.uuid}}\')">{{notification._data.uuid}}</a>\n' + "              </div>\n" + "            </div>\n" + '            <div style="padding: 10px;">\n' + "             <div> payload: {{notification._data.payloads}} </div>\n" + '             <div ng-if="notification._data.errorMessage"> error message: {{notification._data.errorMessage}} </div>\n' + "            </div>\n" + "          </div>\n" + "          <br>\n" + "        </div>\n" + "\n" + '        <div style="height:20px">&nbsp;</div>\n' + '        <div style="padding: 10px 5px 10px 5px">\n' + '          <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + '          <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_displ
 ay}}; float:right;">Next ></button>\n' + "        </div>\n" + "      </div>\n" + "   </section>\n" + "</div>\n");
-        $templateCache.put("push/push-receipts.html", '<div class="content-page" style="min-height: 500px;">\n' + '  <span style="float: left">\n' + '    <a href="#!/push/history" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>\n' + "  <br>\n" + "\n" + '  <div style="clear: both;">&nbsp;</div>\n' + '  <table class="table">\n' + "    <tbody>\n" + '    <tr class="zebraRows notifications-row">\n' + '      <td class="notifications-details bold-header">Created</td>\n' + '      <td class="notifications-details bold-header">Payload</td>\n' + '      <td class="notifications-details bold-header">Sent</td>\n' + '      <td class="notifications-details bold-header">Error</td>\n' + "    </tr>\n" + "\n" + '    <tr class="zebraRows notifications-row" ng-repeat="receipt in receiptsCollection._list">\n' + "      <td class=\"details\">{{receipt.get('created')}}</td>\n" + "      <td class=\"details\">{{receipt.get('payload')}}</td>\n" + "      <td cla
 ss=\"details\">{{receipt.get('sent')}}</td>\n" + "      <td class=\"view-details\">{{receipt.get('errorCode') + (receipt.get('errorCode') ? ':' : '')}} {{receipt.get('errorMessage')}}</td>\n" + "    </tr>\n" + "  </table>\n" + "  <br>\n" + "\n" + "\n" + "\n" + '  <div style="height:20px">&nbsp;</div>\n' + '  <div style="padding: 10px 5px 10px 5px">\n' + '    <button class="btn btn-primary" ng-click="getPrevious()" style="display:{{previous_display}}">< Previous</button>\n' + '    <button class="btn btn-primary" ng-click="getNext()" style="display:{{next_display}}; float:right;">Next ></button>\n' + "  </div>\n" + "\n" + "</div>\n" + "\n" + "\n" + "\n" + '<!--div id="notificationsReceipt-panel" class="panel-buffer">\n' + '  <div class="well thingy">\n' + '    <span class="title">Notification Receipts</span>\n' + '    <span style="float: right"><a href="#" class="notifications-links" id="return-to-notifications"><- Return to All Notifications</a></span>\n' + "  </div>\n" + '  <div sty
 le="float: left">\n' + '    <ul class="nav nav-pills">\n' + '      <li class="active"><a href="#" id="view-notification-receipt-all">All</a></li>\n' + '      <li><a href="#" id="view-notification-receipt-received">Received</a></li>\n' + '      <li><a href="#" id="view-notification-receipt-failed">Failed</a></li>\n' + "    </ul>\n" + "  </div>\n" + '  <div style="margin-top:35px;">&nbsp;</div>\n' + '  <div id="notification-receipts-display">\n' + "    <br><br>No Notifications found.\n" + "  </div>\n" + "\n" + '  <ul id="notification-receipt-pagination" class="pager">\n' + '    <li style="display: none" id="notification-receipt-previous" class="previous"><a >&larr; Previous</a></li>\n' + '    <li style="display: none" id="notification-receipt-next" class="next"><a >Next &rarr;</a></li>\n' + "  </ul>\n" + "\n" + "</div-->");
-        $templateCache.put("push/push-send-notification.html", '<div class="content-page">\n' + "\n" + "\n" + '    <page-title icon="&#128319;" title="Send Notification"></page-title>\n' + "\n" + "\n" + '  <a style="float: right" target="_blank" href="http://apigee.com/docs/usergrid/content/push-notifications" class="notifications-links">Learn more in our docs</a>\n' + "\n" + '  <form id="query-inputs" class="notifcations-form" ng-submit="scheduleNotification()" novalidate name="send">\n' + "    <h4>Notifier and Recipients</h4>\n" + "    Choose the Notifier (a configured notification service) to connect with for this push notification. Only users\n" + "    with devices registered with this notifier will receive the push notification. If a group is selected, only the users\n" + "    in the selected goup, with devices registered with this notifier, will receive the push notification.\n" + "\n" + "    <br/><br/>\n" + '    <label for="send-notification-notifier">Notifier:</label>\n' + '
     <select name="notifierName" ng-required="true" id="send-notification-notifier" ng-model="send.selectedNotifier" ng-options="n._data.name for n in notifiersCollection">\n' + '      <option value="">Choose Notifier</option>\n' + "    </select>\n" + '    <span ng-sho

<TRUNCATED>