├── requirements.txt ├── nextUI ├── images │ ├── bma.png │ ├── bma1.png │ └── bma2.png ├── bower_components │ └── next-bower │ │ ├── fonts │ │ ├── next-font.eot │ │ ├── next-font.ttf │ │ ├── next-font.woff │ │ └── cisco │ │ │ ├── CiscoSansRegular.otf │ │ │ ├── CiscoSansExtraLight.otf │ │ │ ├── ciscosansregular-webfont.eot │ │ │ ├── ciscosansregular-webfont.ttf │ │ │ ├── ciscosansregular-webfont.woff │ │ │ ├── ciscosansextralight-webfont.eot │ │ │ ├── ciscosansextralight-webfont.ttf │ │ │ └── ciscosansextralight-webfont.woff │ │ ├── doc │ │ ├── assets │ │ │ ├── favicon.png │ │ │ ├── css │ │ │ │ ├── logo.png │ │ │ │ └── external-small.png │ │ │ ├── img │ │ │ │ └── spinner.gif │ │ │ ├── index.html │ │ │ ├── js │ │ │ │ ├── yui-prettify.js │ │ │ │ ├── api-filter.js │ │ │ │ ├── api-search.js │ │ │ │ ├── api-list.js │ │ │ │ └── apidocs.js │ │ │ └── vendor │ │ │ │ └── prettify │ │ │ │ ├── prettify-min.css │ │ │ │ ├── CHANGES.html │ │ │ │ ├── README.html │ │ │ │ ├── COPYING │ │ │ │ └── prettify-min.js │ │ ├── files │ │ │ └── index.html │ │ ├── classes │ │ │ ├── index.html │ │ │ ├── nx.geometry.Math.html │ │ │ └── nx.geometry.Matrix.html │ │ ├── modules │ │ │ └── index.html │ │ ├── api.js │ │ └── index.html │ │ ├── bower.json │ │ └── README.md ├── index.html └── app │ ├── main.js │ ├── topology.js │ └── topology_data.js ├── templates ├── sh_ospf_db_router_det_jun.tmpl ├── sh_isis_db_det_cisco.tmpl ├── disp_ospf_lsdb_router_huawei.tmpl ├── sh_ip_ospf_db_router_cisco.tmpl ├── disp_isis_lsdb_verbose_huawei.tmpl ├── sh_isis_db_ext_jun.tmpl ├── sh_rou_ospf_db_type_router_det_nokia.tmpl └── sh_rou_isis_db_det_nokia.tmpl ├── config.yaml ├── README.md ├── igp_topo_light.py └── test_files ├── sh_router_isis_db_det_nokia.txt ├── sh_ospf_router_det_jun.txt └── sh_isis_db_det_cisco.txt /requirements.txt: -------------------------------------------------------------------------------- 1 | textfsm 2 | PyYAML -------------------------------------------------------------------------------- /nextUI/images/bma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/images/bma.png -------------------------------------------------------------------------------- /nextUI/images/bma1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/images/bma1.png -------------------------------------------------------------------------------- /nextUI/images/bma2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/images/bma2.png -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/next-font.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/next-font.eot -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/next-font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/next-font.ttf -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/next-font.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/next-font.woff -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/doc/assets/favicon.png -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/css/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/doc/assets/css/logo.png -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/img/spinner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/doc/assets/img/spinner.gif -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/CiscoSansRegular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/CiscoSansRegular.otf -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/css/external-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/doc/assets/css/external-small.png -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/CiscoSansExtraLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/CiscoSansExtraLight.otf -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.eot -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.ttf -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansregular-webfont.woff -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.eot -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.ttf -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/a-kuzik/igp_topo_multi/HEAD/nextUI/bower_components/next-bower/fonts/cisco/ciscosansextralight-webfont.woff -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Redirector 5 | 6 | 7 | 8 | Click here to redirect 9 | 10 | 11 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/files/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Redirector 5 | 6 | 7 | 8 | Click here to redirect 9 | 10 | 11 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/classes/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Redirector 5 | 6 | 7 | 8 | Click here to redirect 9 | 10 | 11 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/modules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Redirector 5 | 6 | 7 | 8 | Click here to redirect 9 | 10 | 11 | -------------------------------------------------------------------------------- /templates/sh_ospf_db_router_det_jun.tmpl: -------------------------------------------------------------------------------- 1 | Value Required,Filldown LSA (\S+) 2 | Value Required,Filldown RID ((\d+\.){3}\d+) 3 | Value Type (\S+) 4 | Value Nbr ((\d+\.){3}\d+) 5 | Value Mtrc (\d+) 6 | 7 | Start 8 | ^${LSA}\s+(\*)?${RID}.* -> Continue 9 | ^\s+Type:\s+${Type},\s+Node\s+ID:\s+${Nbr} -> Continue 10 | ^\s+Metric:\s+${Mtrc}.* -> Continue.Record -------------------------------------------------------------------------------- /templates/sh_isis_db_det_cisco.tmpl: -------------------------------------------------------------------------------- 1 | Value Required,Filldown LSPID (\S+\.\d{2}) 2 | Value Required,Filldown Area (\S+) 3 | Value Filldown RID ((\d+\.){3}\d+) 4 | Value Required Mtrc (\d+) 5 | Value Required Nbr (\S+) 6 | 7 | Start 8 | ^${LSPID}-.* -> Continue.Record 9 | ^\s+Area\s+Address:\s+${Area} -> Continue.Record 10 | ^\s+Router\s+ID:\s+${RID} -> Continue.Record 11 | ^\s+Metric:\s+${Mtrc}\s+IS\s+${Nbr} -> Continue.Record 12 | -------------------------------------------------------------------------------- /templates/disp_ospf_lsdb_router_huawei.tmpl: -------------------------------------------------------------------------------- 1 | Value Filldown LsId ((\d+\.){3}\d+) 2 | Value Filldown AdvRtr ((\d+\.){3}\d+) 3 | Value Required LinkId ((\d+\.){3}\d+) 4 | Value Required Data ((\d+\.){3}\d+) 5 | Value Required LType (\S+) 6 | Value Required Metric (\d+) 7 | 8 | Start 9 | ^\s+Ls\s+id\s+\:\s+${LsId} 10 | ^\s+Adv\s+rtr\s+\:\s+${AdvRtr} 11 | ^\s+Link\s+ID:\s+${LinkId} 12 | ^\s+Data\s+\:\s+${Data} 13 | ^\s+Link\s+Type\:\s+${LType} 14 | ^\s+Metric\s+\:\s+${Metric} -> Record 15 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-bower", 3 | "homepage": "http://next-ui.com", 4 | "authors": [ 5 | "Aikepaer Abuduweili " 6 | ], 7 | "description": "NeXt UI Toolkit bower and npm distribution.", 8 | "main": [ 9 | "js/next.js", 10 | "css/next.css" 11 | ], 12 | "moduleType": [], 13 | "keywords": [ 14 | "NeXt", 15 | "topology", 16 | "SDN" 17 | ], 18 | "ignore": [], 19 | "version": "1.0.1", 20 | "license": "EPL-1.0" 21 | } -------------------------------------------------------------------------------- /templates/sh_ip_ospf_db_router_cisco.tmpl: -------------------------------------------------------------------------------- 1 | Value Required,Filldown Area (\S+) 2 | Value Required,Filldown RID ((\d+\.){3}\d+) 3 | Value Required LinkType ((point-to-point)|(Transit)|(Stub)) 4 | Value Nbr ((\d+\.){3}\d+) 5 | Value Mtrc (\d+) 6 | 7 | Start 8 | ^.*\(Area\s+${Area}\) -> Continue.Record 9 | ^\s+Advertising\s+Router:\s+${RID} -> Continue.Record 10 | ^\s+Link\s+connected\s+to:.*${LinkType} -> Continue 11 | ^\s+\(Link\s+ID\).*:\s+${Nbr} -> Continue 12 | ^.*Metrics:\s+${Mtrc} -> Continue.Record 13 | -------------------------------------------------------------------------------- /templates/disp_isis_lsdb_verbose_huawei.tmpl: -------------------------------------------------------------------------------- 1 | Value Filldown Source (\S+) 2 | Value Filldown Hostname (\S+) 3 | Value Filldown Area (\S+) 4 | Value Required Nbr (\S+) 5 | Value Required Metric (\d+) 6 | Value Fillup RID ((\d+\.){3}\d+) 7 | 8 | Start 9 | ^\s+SOURCE\s+${Source} -> Continue.Record 10 | ^\s+HOST\s+NAME\s+${Hostname} -> Continue.Record 11 | ^\s+AREA\s+ADDR\s+${Area} -> Continue.Record 12 | ^\S+NBR\s+ID\s+${Nbr}\s+COST:\s+${Metric} -> Continue.Record 13 | ^\s+Router\s+ID\s+${RID} -> Continue.Record 14 | 15 | 16 | -------------------------------------------------------------------------------- /templates/sh_isis_db_ext_jun.tmpl: -------------------------------------------------------------------------------- 1 | Value Filldown LSPID (\S+\.\d{2}) 2 | Value Filldown Area (\S+) 3 | Value Filldown RID ((\d+\.){3}\d+) 4 | Value Required,Filldown Hostname (\S+) 5 | Value Required Nbr (\S+) 6 | Value Required Metric (\d+) 7 | 8 | Start 9 | ^${LSPID}-\d+\s+Sequence:.* -> Continue.Record 10 | ^\s+Area\s+address:\s+${Area}.* -> Continue.Record 11 | ^\s+IP\s+router\s+id:\s+${RID} -> Continue.Record 12 | ^\s+Hostname:\s+${Hostname} -> Continue.Record 13 | ^\s+IS\s+extended\s+neighbor:\s+${Nbr},.*\s+Metric:\s+\S+\s+${Metric} -> Continue.Record 14 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/js/yui-prettify.js: -------------------------------------------------------------------------------- 1 | YUI().use('node', function(Y) { 2 | var code = Y.all('.prettyprint.linenums'); 3 | if (code.size()) { 4 | code.each(function(c) { 5 | var lis = c.all('ol li'), 6 | l = 1; 7 | lis.each(function(n) { 8 | n.prepend(''); 9 | l++; 10 | }); 11 | }); 12 | var h = location.hash; 13 | location.hash = ''; 14 | h = h.replace('LINE_', 'LINENUM_'); 15 | location.hash = h; 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /nextUI/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | IGP Topology 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /templates/sh_rou_ospf_db_type_router_det_nokia.tmpl: -------------------------------------------------------------------------------- 1 | Value Required,Filldown Area ((\d+\.){3}\d+) 2 | Value Required,Filldown RID ((\d+\.){3}\d+) 3 | Value Required,Filldown LSAType (\S+) 4 | Value LinkType ((\S+\s+)+) 5 | Value Nbr ((\d+\.){3}\d+) 6 | Value Mtrc (\d+) 7 | 8 | Start 9 | ^Area\s+Id\s+:\s+${Area}.* -> Continue 10 | ^Link\s+State\s+Id\s+:\s+${RID}.* -> Continue 11 | ^LSA\s+Type\s+:\s+${LSAType} -> Continue 12 | ^Link\s+Type.*:\s+${LinkType} -> Continue 13 | ^((Nbr\s+Rtr\s+Id\s+\(\d+\))|(Network\s+\(\d+\))|(DR\s+Rtr\s+Id\s+\(\d+\)))\s+:\s+${Nbr}.* -> Continue 14 | ^.*Metric-\d+.*\s+:\s+${Mtrc}.* -> Continue.Record -------------------------------------------------------------------------------- /templates/sh_rou_isis_db_det_nokia.tmpl: -------------------------------------------------------------------------------- 1 | Value Required,Filldown LSPID (\S+) 2 | Value Required,Filldown Level (\S+) 3 | Value Required,Filldown Area (\d+\.\d+) 4 | Value Required,Filldown RID ((\d+\.){3}\d+) 5 | Value Required Nbr (\S+) 6 | Value Mtrc (\d+) 7 | Value NbrIP ((\d+\.){3}\d+) 8 | 9 | 10 | Start 11 | ^LSP\s+ID\s+:\s+${LSPID}-00\s+Level\s+:\s+${Level} -> Continue.Record 12 | ^\s+Area\s+Address\s+:\s+\(\d+\)\s+${Area}.* -> Continue.Record 13 | ^\s+Router\s+ID\s+:\s+${RID} -> Continue.Record 14 | ^\s+Nbr\s+:\s+${Nbr} -> Continue 15 | ^\s+Default\s+Metric\s+:\s+${Mtrc} -> Continue 16 | ^\s+Nbr\s+IP\s+:\s+${NbrIP} -> Continue.Record 17 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/vendor/prettify/prettify-min.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} -------------------------------------------------------------------------------- /nextUI/app/main.js: -------------------------------------------------------------------------------- 1 | (function(nx){ 2 | 3 | // instantiate NeXt app 4 | var app = new nx.ui.Application(); 5 | 6 | // instantiate Topology class 7 | var topology = new MyTopology(); 8 | 9 | // add customs icons 10 | topology.registerIcon("bma", "images/bma.png", 15, 15); 11 | topology.registerIcon("bma1", "images/bma1.png", 40, 48); 12 | topology.registerIcon("bma2", "images/bma2.png", 15, 15); 13 | 14 | // load topology data from app/data.js 15 | topology.data(topologyData); 16 | 17 | // bind the topology object to the app 18 | topology.attach(app); 19 | 20 | // app must run inside a specific container. In our case this is the one with id="topology-container" 21 | app.container(document.getElementById("topology-container")); 22 | 23 | })(nx); 24 | -------------------------------------------------------------------------------- /config.yaml: -------------------------------------------------------------------------------- 1 | ############################################################### 2 | ###Please specify here host's vendor and type of IGP 3 | ############################################################### 4 | host_type: huawei 5 | igp: ospf 6 | 7 | ############################################################### 8 | ####Please specify here path to your file with LSDB information 9 | ############################################################### 10 | #lsdb_file: test_files/sh_ospf_router_det_jun.txt 11 | #lsdb_file: test_files/sh_isis_db_ext_jun.txt 12 | #lsdb_file: test_files/sh_isis_db_det_cisco.txt 13 | #lsdb_file: test_files/sh_ip_ospf_db_router_cisco.txt 14 | #lsdb_file: test_files/sh_router_isis_db_det_nokia.txt 15 | lsdb_file: test_files/displ_ospf_lsdb_router_huawei.txt 16 | 17 | -------------------------------------------------------------------------------- /nextUI/app/topology.js: -------------------------------------------------------------------------------- 1 | (function (nx) { 2 | nx.define('MyTopology', nx.graphic.Topology, { 3 | methods: { 4 | "init": function(){ 5 | this.inherited({ 6 | // width 100% if true 7 | 'adaptive': false, 8 | // show icons' nodes, otherwise display dots 9 | 'showIcon': true, 10 | // special configuration for nodes 11 | 'nodeConfig': { 12 | 'label': 'model.name', 13 | 'iconType': 'model.icon', 14 | 'color': '#0how00' 15 | }, 16 | // special configuration for links 17 | 'linkConfig': { 18 | 'linkType': 'curve', 19 | 'color': "model.color" 20 | }, 21 | // property name to identify unique nodes 22 | 'identityKey': 'id', // helps to link source and target 23 | // canvas size 24 | 'width': 1900, 25 | 'height': 1000, 26 | // "engine" that process topology prior to rendering 27 | 'dataProcessor': 'force', 28 | // moves the labels in order to avoid overlay 29 | 'enableSmartLabel': true, 30 | // smooth scaling. may slow down, if true 31 | 'enableGradualScaling': true, 32 | // if true, two nodes can have more than one link 33 | 'supportMultipleLink': true, 34 | // enable scaling 35 | "scalable": true 36 | }); 37 | } 38 | } 39 | }); 40 | })(nx); 41 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/js/api-filter.js: -------------------------------------------------------------------------------- 1 | YUI.add('api-filter', function (Y) { 2 | 3 | Y.APIFilter = Y.Base.create('apiFilter', Y.Base, [Y.AutoCompleteBase], { 4 | // -- Initializer ---------------------------------------------------------- 5 | initializer: function () { 6 | this._bindUIACBase(); 7 | this._syncUIACBase(); 8 | }, 9 | getDisplayName: function(name) { 10 | 11 | Y.each(Y.YUIDoc.meta.allModules, function(i) { 12 | if (i.name === name && i.displayName) { 13 | name = i.displayName; 14 | } 15 | }); 16 | 17 | return name; 18 | } 19 | 20 | }, { 21 | // -- Attributes ----------------------------------------------------------- 22 | ATTRS: { 23 | resultHighlighter: { 24 | value: 'phraseMatch' 25 | }, 26 | 27 | // May be set to "classes" or "modules". 28 | queryType: { 29 | value: 'classes' 30 | }, 31 | 32 | source: { 33 | valueFn: function() { 34 | var self = this; 35 | return function(q) { 36 | var data = Y.YUIDoc.meta[self.get('queryType')], 37 | out = []; 38 | Y.each(data, function(v) { 39 | if (v.toLowerCase().indexOf(q.toLowerCase()) > -1) { 40 | out.push(v); 41 | } 42 | }); 43 | return out; 44 | }; 45 | } 46 | } 47 | } 48 | }); 49 | 50 | }, '3.4.0', {requires: [ 51 | 'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources' 52 | ]}); 53 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # igp_topo_multi 2 | 3 | ### IGP topology with NeXt UI ### 4 | 5 | This is not the first network topology drawing tool that use the NeXt UI. 6 | The NeXt UI Toolkit is an HTML5 / JavaScript based toolbox for networked web applications. 7 | https://creations.devnetcloud.com/detail?cid=1e4a9f92-deea-11e7-9d2f-aed03b171102 8 | https://github.com/NeXt-UI 9 | 10 | This small project contains Python script and templates for parsing IGP LSDB (OSPF and ISIS) such vendors as Nokia, Juniper, Cisco and Huawei, creating topology in json format for drawing network topology in NeXt UI and showing it in your browser. 11 | 12 | Using this script is very easy. 13 | 14 | 1. Please load a file with LSDB in directory ```/test_files```. Currently contains the few tests files. 15 | 2. In the file config.yaml specify the path and name to your LSDB file, vendor name, where did you get the LSDB file, and type of IGP (OPSF or ISIS). 16 | 3. Install requirements from ```requirements.txt```. 17 | 4. Runnig the script ```igp_topo_light.py``` and enjoy your network topology in a browser. 18 | 19 | Currently supported: 20 | 21 | - Nokia - OSPF and ISIS; 22 | - Juniper - OSPF and ISIS; 23 | - Cisco - OSPF and ISIS; 24 | - Huawei - OSPF and ISIS. 25 | 26 | Following commands outputs are possible for parsing: 27 | 28 | Nokia: 29 | 30 | ```show router isis database detail``` 31 | 32 | ```show router ospf database type router detail``` 33 | 34 | Juniper: 35 | 36 | ```show isis database extensive``` 37 | 38 | ```show ospf database router detail``` 39 | 40 | Cisco: 41 | 42 | ```show isis database detail``` 43 | 44 | ```show ip ospf database router``` 45 | 46 | Huawei: 47 | 48 | ```display isis lsdb verbose``` 49 | 50 | ```display ospf lsdb router``` 51 | 52 | 53 | **If you clone, don't forget to leave a star :-)** 54 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/js/api-search.js: -------------------------------------------------------------------------------- 1 | YUI.add('api-search', function (Y) { 2 | 3 | var Lang = Y.Lang, 4 | Node = Y.Node, 5 | YArray = Y.Array; 6 | 7 | Y.APISearch = Y.Base.create('apiSearch', Y.Base, [Y.AutoCompleteBase], { 8 | // -- Public Properties ---------------------------------------------------- 9 | RESULT_TEMPLATE: 10 | '
  • ' + 11 | '' + 12 | '

    {name}

    ' + 13 | '{resultType}' + 14 | '
    {description}
    ' + 15 | '{class}' + 16 | '
    ' + 17 | '
  • ', 18 | 19 | // -- Initializer ---------------------------------------------------------- 20 | initializer: function () { 21 | this._bindUIACBase(); 22 | this._syncUIACBase(); 23 | }, 24 | 25 | // -- Protected Methods ---------------------------------------------------- 26 | _apiResultFilter: function (query, results) { 27 | // Filter components out of the results. 28 | return YArray.filter(results, function (result) { 29 | return result.raw.resultType === 'component' ? false : result; 30 | }); 31 | }, 32 | 33 | _apiResultFormatter: function (query, results) { 34 | return YArray.map(results, function (result) { 35 | var raw = Y.merge(result.raw), // create a copy 36 | desc = raw.description || ''; 37 | 38 | // Convert description to text and truncate it if necessary. 39 | desc = Node.create('
    ' + desc + '
    ').get('text'); 40 | 41 | if (desc.length > 65) { 42 | desc = Y.Escape.html(desc.substr(0, 65)) + ' …'; 43 | } else { 44 | desc = Y.Escape.html(desc); 45 | } 46 | 47 | raw['class'] || (raw['class'] = ''); 48 | raw.description = desc; 49 | 50 | // Use the highlighted result name. 51 | raw.name = result.highlighted; 52 | 53 | return Lang.sub(this.RESULT_TEMPLATE, raw); 54 | }, this); 55 | }, 56 | 57 | _apiTextLocator: function (result) { 58 | return result.displayName || result.name; 59 | } 60 | }, { 61 | // -- Attributes ----------------------------------------------------------- 62 | ATTRS: { 63 | resultFormatter: { 64 | valueFn: function () { 65 | return this._apiResultFormatter; 66 | } 67 | }, 68 | 69 | resultFilters: { 70 | valueFn: function () { 71 | return this._apiResultFilter; 72 | } 73 | }, 74 | 75 | resultHighlighter: { 76 | value: 'phraseMatch' 77 | }, 78 | 79 | resultListLocator: { 80 | value: 'data.results' 81 | }, 82 | 83 | resultTextLocator: { 84 | valueFn: function () { 85 | return this._apiTextLocator; 86 | } 87 | }, 88 | 89 | source: { 90 | value: '/api/v1/search?q={query}&count={maxResults}' 91 | } 92 | } 93 | }); 94 | 95 | }, '3.4.0', {requires: [ 96 | 'autocomplete-base', 'autocomplete-highlighters', 'autocomplete-sources', 97 | 'escape' 98 | ]}); 99 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/README.md: -------------------------------------------------------------------------------- 1 | # NeXt UI Framework 2 | 3 | NeXt UI toolkit is an HTML5/JavaScript based toolkit for network web application. It provides a network centric topology UI component featuring high performance and rich functionality. NeXt can display large complex network topologies, aggregated network nodes, traffic/path/tunnel/group visualizations and it includes different layout algorithms, map overlays, and preset user friendly interactions. NeXt can work together with DLUX to build ODL apps. 4 | 5 | Homepage : https://wiki.opendaylight.org/view/NeXt:Main 6 | 7 | UI Toolkit Quicklook : https://www.youtube.com/watch?v=gBsUDu8aucs 8 | 9 | Current version : 1.0.0 10 | 11 | ## Key Features 12 | 13 | * Large complex network topologies 14 | * Aggregated network nodes 15 | * Traffic/path/tunnel/group visualizations 16 | * Different layout algorithms 17 | * Map overlays 18 | * Preset user-friendly interactions 19 | 20 | ## File structure 21 | ``` 22 | next/ 23 | |- css/ 24 | | |- next.css // next stylesheet file 25 | | |- next.min.css // minimized stylesheet file 26 | | |- next-componentized.css 27 | | |- next-componentized.min.css 28 | |- js 29 | | |- next.js // next js library 30 | | |- next.min.js // minimized js library 31 | |- fonts/ // font resources foler 32 | | doc/ //APi manual 33 | |- README.md 34 | ``` 35 | 36 | ## Quick start 37 | 38 | 1) Create a HTML file. 39 | 40 | ```HTML 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 51 | 52 | 53 | ``` 54 | 55 | 2) Edit next code 56 | 57 | ```javascript 58 | // Initialize a topology component 59 | var topo = new nx.graphic.Topology({ 60 | }); 61 | 62 | // Create new app 63 | var app = new nx.ui.Application(); 64 | 65 | // Attach topo to app 66 | topo.attach(app); 67 | ``` 68 | 69 | 3) Open html file with Chrome 70 | 71 | ### Tutorials and Sample code 72 | 73 | Tutorials : https://wiki.opendaylight.org/view/NeXt:Main 74 | 75 | Opendaylight sample code intergrate DLUX with NeXt: https://github.com/CiscoDevNet/opendaylight-sample-apps 76 | 77 | BIERMAN : https://github.com/zverevalexei/bierman-gui 78 | 79 | ## Build instructions from source code 80 | 81 | Git : https://git.opendaylight.org/gerrit/p/next 82 | 83 | ### Environment requirements 84 | 85 | In order to build NeXt from sources, you must have [Node.js](https://nodejs.org/) installed. 86 | 87 | After that, make sure to have [Grunt](https://www.npmjs.com/package/grunt) installed. To do so, run: 88 | 89 | ``` 90 | npm install grunt 91 | ``` 92 | 93 | ### Build process 94 | * ```npm install``` to install npm modules 95 | * ```grunt``` to build from sources 96 | 97 | ### Authorized Devs Only: Bower Updates 98 | You should only update Bower if the build is stable, or a major issue has been fixed. 99 | 100 | To do so, type in the command line: 101 | 102 | ``` 103 | node update-bower.js -u {{GITHUB USERNAME}} -p {{GITHUB PASSWORD}} -v {{VERSION NUMBER}} 104 | ``` 105 | Make sure to turn ```{{GITHUB USERNAME}}```, ```{{GITHUB PASSWORD}}``` and ```{{NEW VERSION}}``` into appropriate values. 106 | 107 | Example: 108 | 109 | ``` 110 | node update-bower.js -u gituser -p 123456 -v 0.1.0 111 | ``` 112 | 113 | Leave the terminal window open until you see ```Done!``` message. 114 | 115 | ## Who's Using NeXt 116 | Here we feature a few customers who choose NeXt framework as their topology visualization tool and use it in their products. 117 | 118 | * [Cisco](https://cisco.com/) 119 | * [Verizon](https://www.verizonwireless.com) 120 | * [AT&T](https://att.com) 121 | * [HP Enterprise](https://hpe.com) 122 | * [NTS Netzwerk Telekom Service AG](http://www.nts.eu/en/) 123 | 124 | Are you *next*? 125 | 126 | ## Bugs 127 | 128 | [Open Bugs](https://bugs.opendaylight.org/buglist.cgi?bug_status=__open__&product=next) 129 | 130 | ## Team 131 | 132 | * Aikepaer Abuduweili (aaikepae@cisco.com) 133 | * Kang Li (lkang2@cisco.com) 134 | * Alexei Zverev (alzverev@cisco.com) 135 | * Xu Yangyang(yangyxu@cisco.com) 136 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/api.js: -------------------------------------------------------------------------------- 1 | YUI.add("yuidoc-meta", function(Y) { 2 | Y.YUIDoc = { meta: { 3 | "classes": [ 4 | "nx", 5 | "nx.Iterable", 6 | "nx.Object", 7 | "nx.Observable", 8 | "nx.data.Collection", 9 | "nx.data.Convex", 10 | "nx.data.Counter", 11 | "nx.data.Dictionary", 12 | "nx.data.Edge", 13 | "nx.data.EdgeSet", 14 | "nx.data.EdgeSetCollection", 15 | "nx.data.Force", 16 | "nx.data.ObservableCollection", 17 | "nx.data.ObservableDictionary", 18 | "nx.data.ObservableGraph", 19 | "nx.data.ObservableGraph.ForceProcessor", 20 | "nx.data.ObservableObject", 21 | "nx.data.Query", 22 | "nx.data.SortedMap", 23 | "nx.data.Vertex", 24 | "nx.data.VertexSet", 25 | "nx.data.nx.Env", 26 | "nx.data.nx.Util", 27 | "nx.data.nx.dom.Document", 28 | "nx.data.nx.dom.Element", 29 | "nx.data.nx.dom.Fragment", 30 | "nx.data.nx.dom.Node", 31 | "nx.data.nx.dom.Text", 32 | "nx.geometry.BezierCurve", 33 | "nx.geometry.Line", 34 | "nx.geometry.Math", 35 | "nx.geometry.Matrix", 36 | "nx.geometry.Vector", 37 | "nx.graphic.Arc", 38 | "nx.graphic.BezierCurves", 39 | "nx.graphic.Circle", 40 | "nx.graphic.Group", 41 | "nx.graphic.Icon", 42 | "nx.graphic.Icons", 43 | "nx.graphic.Image", 44 | "nx.graphic.Line", 45 | "nx.graphic.LinkSetTooltipContent", 46 | "nx.graphic.LinkTooltipContent", 47 | "nx.graphic.NodeTooltipContent", 48 | "nx.graphic.Path", 49 | "nx.graphic.Polygon", 50 | "nx.graphic.Rect", 51 | "nx.graphic.Stage", 52 | "nx.graphic.Text", 53 | "nx.graphic.Topology", 54 | "nx.graphic.Topology.AbstractLink", 55 | "nx.graphic.Topology.AbstractNode", 56 | "nx.graphic.Topology.BasePath", 57 | "nx.graphic.Topology.Categories", 58 | "nx.graphic.Topology.CircleGroup", 59 | "nx.graphic.Topology.Config", 60 | "nx.graphic.Topology.DefaultScene", 61 | "nx.graphic.Topology.Event", 62 | "nx.graphic.Topology.Graph", 63 | "nx.graphic.Topology.GroupItem", 64 | "nx.graphic.Topology.GroupsLayer", 65 | "nx.graphic.Topology.Layer", 66 | "nx.graphic.Topology.LayoutMixin", 67 | "nx.graphic.Topology.Link", 68 | "nx.graphic.Topology.LinkMixin", 69 | "nx.graphic.Topology.LinkSet", 70 | "nx.graphic.Topology.LinksLayer", 71 | "nx.graphic.Topology.NeXtForceLayout", 72 | "nx.graphic.Topology.Node", 73 | "nx.graphic.Topology.NodeMixin", 74 | "nx.graphic.Topology.NodeSet", 75 | "nx.graphic.Topology.NodeSetPath", 76 | "nx.graphic.Topology.NodesLayer", 77 | "nx.graphic.Topology.Path", 78 | "nx.graphic.Topology.PathLayer", 79 | "nx.graphic.Topology.PolygonGroup", 80 | "nx.graphic.Topology.RectGroup", 81 | "nx.graphic.Topology.Scene", 82 | "nx.graphic.Topology.SceneMixin", 83 | "nx.graphic.Topology.SelectionNodeScene", 84 | "nx.graphic.Topology.SelectionScene", 85 | "nx.graphic.Topology.StageMixin", 86 | "nx.graphic.Topology.Tooltip", 87 | "nx.graphic.Topology.TooltipManager", 88 | "nx.graphic.Topology.TooltipMixin", 89 | "nx.graphic.Topology.TooltipPolicy", 90 | "nx.graphic.Topology.USMapLayout", 91 | "nx.graphic.Topology.ZoomBySelection", 92 | "nx.graphic.Triangle", 93 | "nx.ui.Application", 94 | "nx.ui.Collection", 95 | "nx.ui.Component", 96 | "nx.ui.CssClass", 97 | "nx.ui.CssStyle", 98 | "nx.ui.DOMComponent", 99 | "nx.ui.Popover", 100 | "nx.ui.Popup", 101 | "nx.ui.PopupContainer", 102 | "nx.ui.nx.graphic.Component", 103 | "nx.ui.nx.graphic.DragManager", 104 | "nx.ui.nx.widget.ZIndexManager", 105 | "nxex.toolkit.collection.CollectionRelation" 106 | ], 107 | "modules": [ 108 | "nx", 109 | "nx.data", 110 | "nx.geometry", 111 | "nx.graphic", 112 | "nx.graphic.Topology", 113 | "nx.graphic.Topology.Group" 114 | ], 115 | "allModules": [ 116 | { 117 | "displayName": "nx", 118 | "name": "nx" 119 | }, 120 | { 121 | "displayName": "nx.data", 122 | "name": "nx.data", 123 | "description": "Vertex class" 124 | }, 125 | { 126 | "displayName": "nx.geometry", 127 | "name": "nx.geometry", 128 | "description": "Mathematics Line class" 129 | }, 130 | { 131 | "displayName": "nx.graphic", 132 | "name": "nx.graphic", 133 | "description": "Base class of graphic component" 134 | }, 135 | { 136 | "displayName": "nx.graphic.Topology", 137 | "name": "nx.graphic.Topology", 138 | "description": "A topology path class\n Path's background colors : ['#b2e47f', '#e4e47f', '#bec2f9', '#b6def7', '#89f0de']" 139 | }, 140 | { 141 | "displayName": "nx.graphic.Topology.Group", 142 | "name": "nx.graphic.Topology.Group", 143 | "description": "Base group shape class" 144 | } 145 | ] 146 | } }; 147 | }); -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/vendor/prettify/CHANGES.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Change Log 5 | 6 | 7 | README 8 | 9 |

    Known Issues

    10 | 22 | 23 |

    Change Log

    24 |

    29 March 2007

    25 | 56 |

    4 Jul 2008

    57 | 63 |

    5 Jul 2008

    64 | 67 |

    14 Jul 2008

    68 | 76 |

    6 Jan 2009

    77 | 93 |

    21 May 2009

    94 | 101 |

    14 August 2009

    102 | 105 |

    3 October 2009

    106 | 109 |

    19 July 2010

    110 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/js/api-list.js: -------------------------------------------------------------------------------- 1 | YUI.add('api-list', function (Y) { 2 | 3 | var Lang = Y.Lang, 4 | YArray = Y.Array, 5 | 6 | APIList = Y.namespace('APIList'), 7 | 8 | classesNode = Y.one('#api-classes'), 9 | inputNode = Y.one('#api-filter'), 10 | modulesNode = Y.one('#api-modules'), 11 | tabviewNode = Y.one('#api-tabview'), 12 | 13 | tabs = APIList.tabs = {}, 14 | 15 | filter = APIList.filter = new Y.APIFilter({ 16 | inputNode : inputNode, 17 | maxResults: 1000, 18 | 19 | on: { 20 | results: onFilterResults 21 | } 22 | }), 23 | 24 | search = APIList.search = new Y.APISearch({ 25 | inputNode : inputNode, 26 | maxResults: 100, 27 | 28 | on: { 29 | clear : onSearchClear, 30 | results: onSearchResults 31 | } 32 | }), 33 | 34 | tabview = APIList.tabview = new Y.TabView({ 35 | srcNode : tabviewNode, 36 | panelNode: '#api-tabview-panel', 37 | render : true, 38 | 39 | on: { 40 | selectionChange: onTabSelectionChange 41 | } 42 | }), 43 | 44 | focusManager = APIList.focusManager = tabviewNode.plug(Y.Plugin.NodeFocusManager, { 45 | circular : true, 46 | descendants: '#api-filter, .yui3-tab-panel-selected .api-list-item a, .yui3-tab-panel-selected .result a', 47 | keys : {next: 'down:40', previous: 'down:38'} 48 | }).focusManager, 49 | 50 | LIST_ITEM_TEMPLATE = 51 | '
  • ' + 52 | '{displayName}' + 53 | '
  • '; 54 | 55 | // -- Init --------------------------------------------------------------------- 56 | 57 | // Duckpunch FocusManager's key event handling to prevent it from handling key 58 | // events when a modifier is pressed. 59 | Y.before(function (e, activeDescendant) { 60 | if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { 61 | return new Y.Do.Prevent(); 62 | } 63 | }, focusManager, '_focusPrevious', focusManager); 64 | 65 | Y.before(function (e, activeDescendant) { 66 | if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { 67 | return new Y.Do.Prevent(); 68 | } 69 | }, focusManager, '_focusNext', focusManager); 70 | 71 | // Create a mapping of tabs in the tabview so we can refer to them easily later. 72 | tabview.each(function (tab, index) { 73 | var name = tab.get('label').toLowerCase(); 74 | 75 | tabs[name] = { 76 | index: index, 77 | name : name, 78 | tab : tab 79 | }; 80 | }); 81 | 82 | // Switch tabs on Ctrl/Cmd-Left/Right arrows. 83 | tabviewNode.on('key', onTabSwitchKey, 'down:37,39'); 84 | 85 | // Focus the filter input when the `/` key is pressed. 86 | Y.one(Y.config.doc).on('key', onSearchKey, 'down:83'); 87 | 88 | // Keep the Focus Manager up to date. 89 | inputNode.on('focus', function () { 90 | focusManager.set('activeDescendant', inputNode); 91 | }); 92 | 93 | // Update all tabview links to resolved URLs. 94 | tabview.get('panelNode').all('a').each(function (link) { 95 | link.setAttribute('href', link.get('href')); 96 | }); 97 | 98 | // -- Private Functions -------------------------------------------------------- 99 | function getFilterResultNode() { 100 | return filter.get('queryType') === 'classes' ? classesNode : modulesNode; 101 | } 102 | 103 | // -- Event Handlers ----------------------------------------------------------- 104 | function onFilterResults(e) { 105 | var frag = Y.one(Y.config.doc.createDocumentFragment()), 106 | resultNode = getFilterResultNode(), 107 | typePlural = filter.get('queryType'), 108 | typeSingular = typePlural === 'classes' ? 'class' : 'module'; 109 | 110 | if (e.results.length) { 111 | YArray.each(e.results, function (result) { 112 | frag.append(Lang.sub(LIST_ITEM_TEMPLATE, { 113 | rootPath : APIList.rootPath, 114 | displayName : filter.getDisplayName(result.highlighted), 115 | name : result.text, 116 | typePlural : typePlural, 117 | typeSingular: typeSingular 118 | })); 119 | }); 120 | } else { 121 | frag.append( 122 | '
  • ' + 123 | 'No ' + typePlural + ' found.' + 124 | '
  • ' 125 | ); 126 | } 127 | 128 | resultNode.empty(true); 129 | resultNode.append(frag); 130 | 131 | focusManager.refresh(); 132 | } 133 | 134 | function onSearchClear(e) { 135 | 136 | focusManager.refresh(); 137 | } 138 | 139 | function onSearchKey(e) { 140 | var target = e.target; 141 | 142 | if (target.test('input,select,textarea') 143 | || target.get('isContentEditable')) { 144 | return; 145 | } 146 | 147 | e.preventDefault(); 148 | 149 | inputNode.focus(); 150 | focusManager.refresh(); 151 | } 152 | 153 | function onSearchResults(e) { 154 | var frag = Y.one(Y.config.doc.createDocumentFragment()); 155 | 156 | if (e.results.length) { 157 | YArray.each(e.results, function (result) { 158 | frag.append(result.display); 159 | }); 160 | } else { 161 | frag.append( 162 | '
  • ' + 163 | 'No results found. Maybe you\'ll have better luck with a ' + 164 | 'different query?' + 165 | '
  • ' 166 | ); 167 | } 168 | 169 | 170 | focusManager.refresh(); 171 | } 172 | 173 | function onTabSelectionChange(e) { 174 | var tab = e.newVal, 175 | name = tab.get('label').toLowerCase(); 176 | 177 | tabs.selected = { 178 | index: tab.get('index'), 179 | name : name, 180 | tab : tab 181 | }; 182 | 183 | switch (name) { 184 | case 'classes': // fallthru 185 | case 'modules': 186 | filter.setAttrs({ 187 | minQueryLength: 0, 188 | queryType : name 189 | }); 190 | 191 | search.set('minQueryLength', -1); 192 | 193 | // Only send a request if this isn't the initially-selected tab. 194 | if (e.prevVal) { 195 | filter.sendRequest(filter.get('value')); 196 | } 197 | break; 198 | 199 | case 'everything': 200 | filter.set('minQueryLength', -1); 201 | search.set('minQueryLength', 1); 202 | 203 | if (search.get('value')) { 204 | search.sendRequest(search.get('value')); 205 | } else { 206 | inputNode.focus(); 207 | } 208 | break; 209 | 210 | default: 211 | // WTF? We shouldn't be here! 212 | filter.set('minQueryLength', -1); 213 | search.set('minQueryLength', -1); 214 | } 215 | 216 | if (focusManager) { 217 | setTimeout(function () { 218 | focusManager.refresh(); 219 | }, 1); 220 | } 221 | } 222 | 223 | function onTabSwitchKey(e) { 224 | var currentTabIndex = tabs.selected.index; 225 | 226 | if (!(e.ctrlKey || e.metaKey)) { 227 | return; 228 | } 229 | 230 | e.preventDefault(); 231 | 232 | switch (e.keyCode) { 233 | case 37: // left arrow 234 | if (currentTabIndex > 0) { 235 | tabview.selectChild(currentTabIndex - 1); 236 | inputNode.focus(); 237 | } 238 | break; 239 | 240 | case 39: // right arrow 241 | if (currentTabIndex < (Y.Object.size(tabs) - 2)) { 242 | tabview.selectChild(currentTabIndex + 1); 243 | inputNode.focus(); 244 | } 245 | break; 246 | } 247 | } 248 | 249 | }, '3.4.0', {requires: [ 250 | 'api-filter', 'api-search', 'event-key', 'node-focusmanager', 'tabview' 251 | ]}); 252 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/vendor/prettify/README.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | Javascript code prettifier 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 | Languages : CH 20 |

    Javascript code prettifier

    21 | 22 |

    Setup

    23 |
      24 |
    1. Download a distribution 25 |
    2. Include the script and stylesheets in your document 26 | (you will need to make sure the css and js file are on your server, and 27 | adjust the paths in the script and link tag) 28 |
       29 | <link href="prettify.css" type="text/css" rel="stylesheet" />
       30 | <script type="text/javascript" src="prettify.js"></script>
      31 |
    3. Add onload="prettyPrint()" to your 32 | document's body tag. 33 |
    4. Modify the stylesheet to get the coloring you prefer
    5. 34 |
    35 | 36 |

    Usage

    37 |

    Put code snippets in 38 | <pre class="prettyprint">...</pre> 39 | or <code class="prettyprint">...</code> 40 | and it will automatically be pretty printed. 41 | 42 | 43 | 44 | 47 |
    The original 45 | Prettier 46 |
    class Voila {
     49 | public:
     50 |   // Voila
     51 |   static const string VOILA = "Voila";
     52 | 
     53 |   // will not interfere with embedded tags.
     54 | }
    55 | 56 |
    class Voila {
     57 | public:
     58 |   // Voila
     59 |   static const string VOILA = "Voila";
     60 | 
     61 |   // will not interfere with embedded tags.
     62 | }
    63 |
    64 | 65 |

    FAQ

    66 |

    Which languages does it work for?

    67 |

    The comments in prettify.js are authoritative but the lexer 68 | should work on a number of languages including C and friends, 69 | Java, Python, Bash, SQL, HTML, XML, CSS, Javascript, and Makefiles. 70 | It works passably on Ruby, PHP, VB, and Awk and a decent subset of Perl 71 | and Ruby, but, because of commenting conventions, doesn't work on 72 | Smalltalk, or CAML-like languages.

    73 | 74 |

    LISPy languages are supported via an extension: 75 | lang-lisp.js.

    77 |

    And similarly for 78 | CSS, 80 | Haskell, 82 | Lua, 84 | OCAML, SML, F#, 86 | Visual Basic, 88 | SQL, 90 | Protocol Buffers, and 92 | WikiText.. 94 | 95 |

    If you'd like to add an extension for your favorite language, please 96 | look at src/lang-lisp.js and file an 97 | issue including your language extension, and a testcase.

    99 | 100 |

    How do I specify which language my code is in?

    101 |

    You don't need to specify the language since prettyprint() 102 | will guess. You can specify a language by specifying the language extension 103 | along with the prettyprint class like so:

    104 |
    <pre class="prettyprint lang-html">
    106 |   The lang-* class specifies the language file extensions.
    107 |   File extensions supported by default include
    108 |     "bsh", "c", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html",
    109 |     "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh",
    110 |     "xhtml", "xml", "xsl".
    111 | </pre>
    112 | 113 |

    It doesn't work on <obfuscated code sample>?

    114 |

    Yes. Prettifying obfuscated code is like putting lipstick on a pig 115 | — i.e. outside the scope of this tool.

    116 | 117 |

    Which browsers does it work with?

    118 |

    It's been tested with IE 6, Firefox 1.5 & 2, and Safari 2.0.4. 119 | Look at the test page to see if it 120 | works in your browser.

    121 | 122 |

    What's changed?

    123 |

    See the change log

    124 | 125 |

    Why doesn't Prettyprinting of strings work on WordPress?

    126 |

    Apparently wordpress does "smart quoting" which changes close quotes. 127 | This causes end quotes to not match up with open quotes. 128 |

    This breaks prettifying as well as copying and pasting of code samples. 129 | See 130 | WordPress's help center for info on how to stop smart quoting of code 132 | snippets.

    133 | 134 |

    How do I put line numbers in my code?

    135 |

    You can use the linenums class to turn on line 136 | numbering. If your code doesn't start at line number 1, you can 137 | add a colon and a line number to the end of that class as in 138 | linenums:52. 139 | 140 |

    For example 141 |

    <pre class="prettyprint linenums:4"
    142 | >// This is line 4.
    143 | foo();
    144 | bar();
    145 | baz();
    146 | boo();
    147 | far();
    148 | faz();
    149 | <pre>
    150 | produces 151 |
    // This is line 4.
    153 | foo();
    154 | bar();
    155 | baz();
    156 | boo();
    157 | far();
    158 | faz();
    159 | 
    160 | 161 |

    How do I prevent a portion of markup from being marked as code?

    162 |

    You can use the nocode class to identify a span of markup 163 | that is not code. 164 |

    <pre class=prettyprint>
    165 | int x = foo();  /* This is a comment  <span class="nocode">This is not code</span>
    166 |   Continuation of comment */
    167 | int y = bar();
    168 | </pre>
    169 | produces 170 |
    171 | int x = foo();  /* This is a comment  This is not code
    172 |   Continuation of comment */
    173 | int y = bar();
    174 | 
    175 | 176 |

    For a more complete example see the issue22 177 | testcase.

    178 | 179 |

    I get an error message "a is not a function" or "opt_whenDone is not a function"

    180 |

    If you are calling prettyPrint via an event handler, wrap it in a function. 181 | Instead of doing 182 |

    183 | addEventListener('load', prettyPrint, false); 185 |
    186 | wrap it in a closure like 187 |
    188 | addEventListener('load', function (event) { prettyPrint() }, false); 190 |
    191 | so that the browser does not pass an event object to prettyPrint which 192 | will confuse it. 193 | 194 |


    195 | 196 | 202 | 203 | 204 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/js/apidocs.js: -------------------------------------------------------------------------------- 1 | YUI().use( 2 | 'yuidoc-meta', 3 | 'api-list', 'history-hash', 'node-screen', 'node-style', 'pjax', 4 | function (Y) { 5 | 6 | var win = Y.config.win, 7 | localStorage = win.localStorage, 8 | 9 | bdNode = Y.one('#bd'), 10 | 11 | pjax, 12 | defaultRoute, 13 | 14 | classTabView, 15 | selectedTab; 16 | 17 | // Kill pjax functionality unless serving over HTTP. 18 | if (!Y.getLocation().protocol.match(/^https?\:/)) { 19 | Y.Router.html5 = false; 20 | } 21 | 22 | // Create the default route with middleware which enables syntax highlighting 23 | // on the loaded content. 24 | defaultRoute = Y.Pjax.defaultRoute.concat(function (req, res, next) { 25 | prettyPrint(); 26 | bdNode.removeClass('loading'); 27 | 28 | next(); 29 | }); 30 | 31 | pjax = new Y.Pjax({ 32 | container : '#docs-main', 33 | contentSelector: '#docs-main > .content', 34 | linkSelector : '#bd a', 35 | titleSelector : '#xhr-title', 36 | 37 | navigateOnHash: true, 38 | root : '/', 39 | routes : [ 40 | // -- / ---------------------------------------------------------------- 41 | { 42 | path : '/(index.html)?', 43 | callbacks: defaultRoute 44 | }, 45 | 46 | // -- /classes/* ------------------------------------------------------- 47 | { 48 | path : '/classes/:class.html*', 49 | callbacks: [defaultRoute, 'handleClasses'] 50 | }, 51 | 52 | // -- /files/* --------------------------------------------------------- 53 | { 54 | path : '/files/*file', 55 | callbacks: [defaultRoute, 'handleFiles'] 56 | }, 57 | 58 | // -- /modules/* ------------------------------------------------------- 59 | { 60 | path : '/modules/:module.html*', 61 | callbacks: defaultRoute 62 | } 63 | ] 64 | }); 65 | 66 | // -- Utility Functions -------------------------------------------------------- 67 | 68 | pjax.checkVisibility = function (tab) { 69 | tab || (tab = selectedTab); 70 | 71 | if (!tab) { return; } 72 | 73 | var panelNode = tab.get('panelNode'), 74 | visibleItems; 75 | 76 | // If no items are visible in the tab panel due to the current visibility 77 | // settings, display a message to that effect. 78 | visibleItems = panelNode.all('.item,.index-item').some(function (itemNode) { 79 | if (itemNode.getComputedStyle('display') !== 'none') { 80 | return true; 81 | } 82 | }); 83 | 84 | panelNode.all('.no-visible-items').remove(); 85 | 86 | if (!visibleItems) { 87 | if (Y.one('#index .index-item')) { 88 | panelNode.append( 89 | '
    ' + 90 | '

    ' + 91 | 'Some items are not shown due to the current visibility ' + 92 | 'settings. Use the checkboxes at the upper right of this ' + 93 | 'page to change the visibility settings.' + 94 | '

    ' + 95 | '
    ' 96 | ); 97 | } else { 98 | panelNode.append( 99 | '
    ' + 100 | '

    ' + 101 | 'This class doesn\'t provide any methods, properties, ' + 102 | 'attributes, or events.' + 103 | '

    ' + 104 | '
    ' 105 | ); 106 | } 107 | } 108 | 109 | // Hide index sections without any visible items. 110 | Y.all('.index-section').each(function (section) { 111 | var items = 0, 112 | visibleItems = 0; 113 | 114 | section.all('.index-item').each(function (itemNode) { 115 | items += 1; 116 | 117 | if (itemNode.getComputedStyle('display') !== 'none') { 118 | visibleItems += 1; 119 | } 120 | }); 121 | 122 | section.toggleClass('hidden', !visibleItems); 123 | section.toggleClass('no-columns', visibleItems < 4); 124 | }); 125 | }; 126 | 127 | pjax.initClassTabView = function () { 128 | if (!Y.all('#classdocs .api-class-tab').size()) { 129 | return; 130 | } 131 | 132 | if (classTabView) { 133 | classTabView.destroy(); 134 | selectedTab = null; 135 | } 136 | 137 | classTabView = new Y.TabView({ 138 | srcNode: '#classdocs', 139 | 140 | on: { 141 | selectionChange: pjax.onTabSelectionChange 142 | } 143 | }); 144 | 145 | pjax.updateTabState(); 146 | classTabView.render(); 147 | }; 148 | 149 | pjax.initLineNumbers = function () { 150 | var hash = win.location.hash.substring(1), 151 | container = pjax.get('container'), 152 | hasLines, node; 153 | 154 | // Add ids for each line number in the file source view. 155 | container.all('.linenums>li').each(function (lineNode, index) { 156 | lineNode.set('id', 'l' + (index + 1)); 157 | lineNode.addClass('file-line'); 158 | hasLines = true; 159 | }); 160 | 161 | // Scroll to the desired line. 162 | if (hasLines && /^l\d+$/.test(hash)) { 163 | if ((node = container.getById(hash))) { 164 | win.scroll(0, node.getY()); 165 | } 166 | } 167 | }; 168 | 169 | pjax.initRoot = function () { 170 | var terminators = /^(?:classes|files|modules)$/, 171 | parts = pjax._getPathRoot().split('/'), 172 | root = [], 173 | i, len, part; 174 | 175 | for (i = 0, len = parts.length; i < len; i += 1) { 176 | part = parts[i]; 177 | 178 | if (part.match(terminators)) { 179 | // Makes sure the path will end with a "/". 180 | root.push(''); 181 | break; 182 | } 183 | 184 | root.push(part); 185 | } 186 | 187 | pjax.set('root', root.join('/')); 188 | }; 189 | 190 | pjax.updateTabState = function (src) { 191 | var hash = win.location.hash.substring(1), 192 | defaultTab, node, tab, tabPanel; 193 | 194 | function scrollToNode() { 195 | if (node.hasClass('protected')) { 196 | Y.one('#api-show-protected').set('checked', true); 197 | pjax.updateVisibility(); 198 | } 199 | 200 | if (node.hasClass('private')) { 201 | Y.one('#api-show-private').set('checked', true); 202 | pjax.updateVisibility(); 203 | } 204 | 205 | setTimeout(function () { 206 | // For some reason, unless we re-get the node instance here, 207 | // getY() always returns 0. 208 | var node = Y.one('#classdocs').getById(hash); 209 | win.scrollTo(0, node.getY() - 70); 210 | }, 1); 211 | } 212 | 213 | if (!classTabView) { 214 | return; 215 | } 216 | 217 | if (src === 'hashchange' && !hash) { 218 | defaultTab = 'index'; 219 | } else { 220 | if (localStorage) { 221 | defaultTab = localStorage.getItem('tab_' + pjax.getPath()) || 222 | 'index'; 223 | } else { 224 | defaultTab = 'index'; 225 | } 226 | } 227 | 228 | if (hash && (node = Y.one('#classdocs').getById(hash))) { 229 | if ((tabPanel = node.ancestor('.api-class-tabpanel', true))) { 230 | if ((tab = Y.one('#classdocs .api-class-tab.' + tabPanel.get('id')))) { 231 | if (classTabView.get('rendered')) { 232 | Y.Widget.getByNode(tab).set('selected', 1); 233 | } else { 234 | tab.addClass('yui3-tab-selected'); 235 | } 236 | } 237 | } 238 | 239 | // Scroll to the desired element if this is a hash URL. 240 | if (node) { 241 | if (classTabView.get('rendered')) { 242 | scrollToNode(); 243 | } else { 244 | classTabView.once('renderedChange', scrollToNode); 245 | } 246 | } 247 | } else { 248 | tab = Y.one('#classdocs .api-class-tab.' + defaultTab); 249 | 250 | // When the `defaultTab` node isn't found, `localStorage` is stale. 251 | if (!tab && defaultTab !== 'index') { 252 | tab = Y.one('#classdocs .api-class-tab.index'); 253 | } 254 | 255 | if (classTabView.get('rendered')) { 256 | Y.Widget.getByNode(tab).set('selected', 1); 257 | } else { 258 | tab.addClass('yui3-tab-selected'); 259 | } 260 | } 261 | }; 262 | 263 | pjax.updateVisibility = function () { 264 | var container = pjax.get('container'); 265 | 266 | container.toggleClass('hide-inherited', 267 | !Y.one('#api-show-inherited').get('checked')); 268 | 269 | container.toggleClass('show-deprecated', 270 | Y.one('#api-show-deprecated').get('checked')); 271 | 272 | container.toggleClass('show-protected', 273 | Y.one('#api-show-protected').get('checked')); 274 | 275 | container.toggleClass('show-private', 276 | Y.one('#api-show-private').get('checked')); 277 | 278 | pjax.checkVisibility(); 279 | }; 280 | 281 | // -- Route Handlers ----------------------------------------------------------- 282 | 283 | pjax.handleClasses = function (req, res, next) { 284 | var status = res.ioResponse.status; 285 | 286 | // Handles success and local filesystem XHRs. 287 | if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { 288 | pjax.initClassTabView(); 289 | } 290 | 291 | next(); 292 | }; 293 | 294 | pjax.handleFiles = function (req, res, next) { 295 | var status = res.ioResponse.status; 296 | 297 | // Handles success and local filesystem XHRs. 298 | if (res.ioResponse.readyState === 4 && (!status || (status >= 200 && status < 300))) { 299 | pjax.initLineNumbers(); 300 | } 301 | 302 | next(); 303 | }; 304 | 305 | // -- Event Handlers ----------------------------------------------------------- 306 | 307 | pjax.onNavigate = function (e) { 308 | var hash = e.hash, 309 | originTarget = e.originEvent && e.originEvent.target, 310 | tab; 311 | 312 | if (hash) { 313 | tab = originTarget && originTarget.ancestor('.yui3-tab', true); 314 | 315 | if (hash === win.location.hash) { 316 | pjax.updateTabState('hashchange'); 317 | } else if (!tab) { 318 | win.location.hash = hash; 319 | } 320 | 321 | e.preventDefault(); 322 | return; 323 | } 324 | 325 | // Only scroll to the top of the page when the URL doesn't have a hash. 326 | this.set('scrollToTop', !e.url.match(/#.+$/)); 327 | 328 | bdNode.addClass('loading'); 329 | }; 330 | 331 | pjax.onOptionClick = function (e) { 332 | pjax.updateVisibility(); 333 | }; 334 | 335 | pjax.onTabSelectionChange = function (e) { 336 | var tab = e.newVal, 337 | tabId = tab.get('contentBox').getAttribute('href').substring(1); 338 | 339 | selectedTab = tab; 340 | 341 | // If switching from a previous tab (i.e., this is not the default tab), 342 | // replace the history entry with a hash URL that will cause this tab to 343 | // be selected if the user navigates away and then returns using the back 344 | // or forward buttons. 345 | if (e.prevVal && localStorage) { 346 | localStorage.setItem('tab_' + pjax.getPath(), tabId); 347 | } 348 | 349 | pjax.checkVisibility(tab); 350 | }; 351 | 352 | // -- Init --------------------------------------------------------------------- 353 | 354 | pjax.on('navigate', pjax.onNavigate); 355 | 356 | pjax.initRoot(); 357 | pjax.upgrade(); 358 | pjax.initClassTabView(); 359 | pjax.initLineNumbers(); 360 | pjax.updateVisibility(); 361 | 362 | Y.APIList.rootPath = pjax.get('root'); 363 | 364 | Y.one('#api-options').delegate('click', pjax.onOptionClick, 'input'); 365 | 366 | Y.on('hashchange', function (e) { 367 | pjax.updateTabState('hashchange'); 368 | }, win); 369 | 370 | }); 371 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/vendor/prettify/COPYING: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /igp_topo_light.py: -------------------------------------------------------------------------------- 1 | import textfsm 2 | import yaml 3 | import webbrowser 4 | from pprint import pprint 5 | 6 | with open("config.yaml", "r") as file: 7 | conf = yaml.load(file, Loader=yaml.FullLoader) 8 | 9 | host_type = conf["host_type"] 10 | igp = conf["igp"] 11 | lsdb_file = conf["lsdb_file"] 12 | 13 | try: 14 | with open(lsdb_file) as file: 15 | lsdb = file.read() 16 | except Exception as err: 17 | print(err) 18 | 19 | tmpl1 = "templates/sh_ospf_db_router_det_jun.tmpl" 20 | tmpl3 = "templates/sh_isis_db_det_cisco.tmpl" 21 | tmpl4 = "templates/sh_isis_db_ext_jun.tmpl" 22 | tmpl5 = "templates/disp_isis_lsdb_verbose_huawei.tmpl" 23 | tmpl6 = "templates/sh_rou_ospf_db_type_router_det_nokia.tmpl" 24 | tmpl7 = "templates/sh_rou_isis_db_det_nokia.tmpl" 25 | tmpl8 = "templates/sh_ip_ospf_db_router_cisco.tmpl" 26 | tmpl9 = "templates/disp_ospf_lsdb_router_huawei.tmpl" 27 | 28 | pw_nodes = [] 29 | hostnames = [] 30 | hosts = [] 31 | 32 | ###Function for parsing raw data 33 | def parse_textfsm(template, raw): 34 | templ = open(template) 35 | re_table = textfsm.TextFSM(templ) 36 | parse_data = re_table.ParseText(raw) 37 | return parse_data 38 | 39 | 40 | ###Function for creating lists of hosts and pseudonodes for ISIS 41 | def hosts_pwnodes(links): 42 | for L61 in links: 43 | if L61[0].split(".")[1] == "00": 44 | if L61[0] not in hosts: 45 | hosts.append(L61[0]) 46 | if L61[1].split(".")[1] == "00": 47 | if L61[1] not in hosts: 48 | hosts.append(L61[1]) 49 | if L61[0].split(".")[1] != "00": 50 | if L61[0] not in pw_nodes: 51 | pw_nodes.append(L61[0]) 52 | if L61[1].split(".")[1] != "00": 53 | if L61[1] not in pw_nodes: 54 | pw_nodes.append(L61[1]) 55 | return hosts, pw_nodes 56 | 57 | 58 | ####################### 59 | ###Nokia 60 | ####################### 61 | if host_type == "nokia": 62 | ##Creating topology from OSPF LSDB 63 | if igp == "ospf": 64 | list4 = [] 65 | list5 = [] 66 | out = parse_textfsm(tmpl6, lsdb) 67 | for L4 in out: 68 | if L4[2] == "Router": 69 | if L4[1] not in hosts: 70 | hosts.append(L4[1]) 71 | if "Point To Point" in L4[3]: 72 | list4.append((L4[1], L4[4])) 73 | if "Transit" in L4[3]: 74 | list5.append((L4[1], L4[4])) 75 | if L4[4] not in pw_nodes: 76 | pw_nodes.append(L4[4]) 77 | # Removing doubles from links for P2P and BMA types of connections 78 | for L5 in list4: 79 | for L6 in list4: 80 | if L5[0] == L6[1]: 81 | if L5[1] == L6[0]: 82 | list4.remove(L6) 83 | for L7 in list5: 84 | for L8 in list5: 85 | if L7[0] == L8[1]: 86 | if L7[1] == L8[0]: 87 | list5.remove(L8) 88 | for L9 in list5: 89 | list4.append(L9) 90 | links = list4 91 | 92 | ##Creating topology from ISIS LSDB 93 | if igp == "isis": 94 | list6 = [] 95 | out1 = parse_textfsm(tmpl7, lsdb) 96 | for L10 in out1: 97 | if L10[0] not in hostnames: 98 | hostnames.append(L10[0]) 99 | # Creating links between hosts and pseudonodes 100 | # Removing the lines with the same contents 101 | n = 0 102 | while True: 103 | n += 1 104 | for L11 in out1: 105 | if L11[0] == L11[4]: 106 | out1.remove(L11) 107 | if n == 2: 108 | break 109 | # Removing cross links between nodes and hosts 110 | for L12 in out1: 111 | list6.append((L12[0], L12[4])) 112 | for L13 in list6: 113 | for L2 in list6: 114 | if L13[0] == L2[1]: 115 | if L13[1] == L2[0]: 116 | list6.remove(L2) 117 | links = list6 118 | # Creating lists of hosts and pseudo nodes 119 | hosts, pw_nodes = hosts_pwnodes(list6) 120 | 121 | ####################### 122 | ###Juniper 123 | ####################### 124 | if host_type == "juniper": 125 | ##Creating topology from OSPF LSDB 126 | if igp == "ospf": 127 | list14 = [] 128 | list15 = [] 129 | out2 = parse_textfsm(tmpl1, lsdb) 130 | for L14 in out2: 131 | if L14[0] == "Router": 132 | if L14[1] not in hosts: 133 | hosts.append(L14[1]) 134 | if L14[2] == "PointToPoint": 135 | list14.append((L14[1], L14[3])) 136 | if L14[2] == "Transit": 137 | list15.append((L14[1], L14[3])) 138 | if L14[3] not in pw_nodes: 139 | pw_nodes.append(L14[3]) 140 | # Removing doubles from links for P2P and BMA types of connections 141 | for L15 in list14: 142 | for L16 in list14: 143 | if L15[0] == L16[1]: 144 | if L15[1] == L16[0]: 145 | list14.remove(L16) 146 | for L17 in list15: 147 | for L18 in list15: 148 | if L17[0] == L18[1]: 149 | if L17[1] == L18[0]: 150 | list15.remove(L18) 151 | for L19 in list15: 152 | list14.append(L19) 153 | links = list14 154 | ##Creating topology from ISIS LSDB 155 | if igp == "isis": 156 | out3 = parse_textfsm(tmpl4, lsdb) 157 | list20 = [] 158 | # Creating list of hostnames 159 | for L26 in out3: 160 | if L26[3] not in hostnames: 161 | hostnames.append(L26[3]) 162 | # Creating links between hosts and pseudonodes 163 | # Removing the lines with the same contents 164 | n = 0 165 | while True: 166 | n += 1 167 | for L27 in out3: 168 | if L27[0] == L27[4]: 169 | out3.remove(L27) 170 | if n == 2: 171 | break 172 | # Removing cross links between nodes and hosts 173 | for L28 in out3: 174 | list20.append((L28[0], L28[4])) 175 | for L24 in list20: 176 | for L25 in list20: 177 | if L24[0] == L25[1]: 178 | if L24[1] == L25[0]: 179 | list20.remove(L25) 180 | links = list20 181 | # Creating lists of hosts and pseudo nodes 182 | hosts, pw_nodes = hosts_pwnodes(list20) 183 | 184 | ####################### 185 | ###Cisco 186 | ####################### 187 | if host_type == "cisco": 188 | if igp == "isis": 189 | list21 = [] 190 | out4 = parse_textfsm(tmpl3, lsdb) 191 | # Spliting elements in lists and create list of links 192 | for L41 in out4: 193 | list21.append((L41[0], L41[4])) 194 | # Removing lines where element with index 0 is the same as index 1 195 | n = 0 196 | while True: 197 | n += 1 198 | for L42 in list21: 199 | if L42[0] == L42[1]: 200 | list21.remove(L42) 201 | if n == 2: 202 | break 203 | # Removing double links 204 | for L44 in list21: 205 | for L45 in list21: 206 | if L44[0] == L45[1]: 207 | if L44[1] == L45[0]: 208 | list21.remove(L45) 209 | links = list21 210 | # Creating lists of hosts and pseudo nodes 211 | hosts, pw_nodes = hosts_pwnodes(list21) 212 | 213 | ##Creating topology from OSPF LSDB 214 | if igp == "ospf": 215 | list24 = [] 216 | list25 = [] 217 | out5 = parse_textfsm(tmpl8, lsdb) 218 | for L46 in out5: 219 | if L46[1] not in hosts: 220 | hosts.append(L46[1]) 221 | if "point-to-point" in L46[2]: 222 | list24.append((L46[1], L46[3])) 223 | if "Transit" in L46[2]: 224 | list25.append((L46[1], L46[3])) 225 | if L46[3] not in pw_nodes: 226 | pw_nodes.append(L46[3]) 227 | # Removing doubles from links for P2P and BMA types of connections 228 | for L47 in list24: 229 | for L48 in list24: 230 | if L47[0] == L48[1]: 231 | if L47[1] == L48[0]: 232 | list24.remove(L48) 233 | for L49 in list25: 234 | for L50 in list25: 235 | if L49[0] == L50[1]: 236 | if L49[1] == L50[0]: 237 | list25.remove(L50) 238 | for L51 in list25: 239 | list24.append(L51) 240 | links = list24 241 | 242 | ####################### 243 | ###Huawei 244 | ####################### 245 | if host_type == "huawei": 246 | if igp == "isis": 247 | out6 = parse_textfsm(tmpl5, lsdb) 248 | list23 = [] 249 | # Creating list of hostnames 250 | for L52 in out6: 251 | if L52[1] not in hostnames: 252 | hostnames.append(L52[1]) 253 | # Creating links between hosts and pseudonodes 254 | # Removing the lines with the same contents 255 | n = 0 256 | while True: 257 | n += 1 258 | for L53 in out6: 259 | if L53[0] == L53[3]: 260 | out6.remove(L53) 261 | if n == 2: 262 | break 263 | # Removing cross links between nodes and hosts 264 | for L54 in out6: 265 | list23.append((L54[0], L54[3])) 266 | for L55 in list23: 267 | for L56 in list23: 268 | if L55[0] == L56[1]: 269 | if L55[1] == L56[0]: 270 | list23.remove(L56) 271 | links = list23 272 | # Creating lists of hosts and pseudo nodes 273 | hosts, pw_nodes = hosts_pwnodes(list23) 274 | 275 | ##Creating topology from OSPF LSDB 276 | if igp == "ospf": 277 | out7 = parse_textfsm(tmpl9, lsdb) 278 | list26 = [] 279 | list27 = [] 280 | for L76 in out7: 281 | if L76[1] not in hosts: 282 | hosts.append(L76[1]) 283 | if "P-2-P" in L76[4]: 284 | list26.append((L76[1], L76[2])) 285 | if "TransNet" in L76[4]: 286 | list27.append((L76[1], L76[2])) 287 | if L76[2] == L76[3]: 288 | if L76[3] not in pw_nodes: 289 | pw_nodes.append(L76[2]) 290 | # Removing doubles from links for P2P and BMA types of connections 291 | for L77 in list26: 292 | for L78 in list26: 293 | if L77[0] == L78[1]: 294 | if L77[1] == L78[0]: 295 | list26.remove(L78) 296 | for L79 in list27: 297 | for L80 in list27: 298 | if L79[0] == L80[1]: 299 | if L79[1] == L80[0]: 300 | list27.remove(L80) 301 | for L81 in list27: 302 | list26.append(L81) 303 | links = list26 304 | 305 | ###Create json file for NeXUI 306 | topologyData = {} 307 | topologyData["nodes"] = [] 308 | for L35 in hosts: 309 | topologyData["nodes"].append({"id": L35, "name": L35, "icon": "router"}) 310 | 311 | try: 312 | if len(pw_nodes) != 0: 313 | for L36 in pw_nodes: 314 | topologyData["nodes"].append({"id": L36, "icon": "bma"}) 315 | except Exception as err: 316 | print(err) 317 | 318 | topologyData.update({"links": []}) 319 | ids = 0 320 | for l17 in links: 321 | topologyData["links"].append( 322 | {"id": ids, "source": l17[0], "target": l17[1], "color": "blue"} 323 | ) 324 | ids += 1 325 | 326 | text = "var topologyData = {}".format(topologyData) 327 | with open("nextUI/app/topology_data.js", "w") as file: 328 | file.write(text) 329 | print( 330 | """File for NeXtUI was created. If the drawing didn't opened in your browser 331 | automatically, you can find file index.html in the directory /nextUI and open it manually""" 332 | ) 333 | 334 | # Opening topology draw in browser 335 | webbrowser.open_new_tab("nextUI/index.html") 336 | -------------------------------------------------------------------------------- /test_files/sh_router_isis_db_det_nokia.txt: -------------------------------------------------------------------------------- 1 | *A:DR14# show router isis database detail 2 | 3 | =============================================================================== 4 | Rtr Base ISIS Instance 0 Database (detail) 5 | =============================================================================== 6 | 7 | Displaying Level 1 database 8 | ------------------------------------------------------------------------------- 9 | LSP ID : MX480-2_5-Core_stand-AR11.00-00 Level : L1 10 | Sequence : 0x2ee7 Checksum : 0x4821 Lifetime : 615 11 | Version : 1 Pkt Type : 18 Pkt Ver : 1 12 | Attributes: L1 Max Area : 0 Alloc Len : 285 13 | SYS ID : 0100.0000.0001 SysID Len : 6 Used Len : 285 14 | 15 | TLVs : 16 | Area Addresses: 17 | Area Address : (3) 49.0001 18 | Unknown TLV : 14 Len 2 : 19 | 05 D4 20 | Supp Protocols: 21 | Protocols : IPv4 22 | Protocols : IPv6 23 | Router ID : 24 | Router ID : 10.0.0.1 25 | I/F Addresses : 26 | I/F Address : 10.0.0.1 27 | IS-Hostname : MX480-2_5-Core_stand-AR11 28 | TE IS Nbrs : 29 | Nbr : DR13.00 30 | Default Metric : 10 31 | Sub TLV Len : 74 32 | IF Addr : 10.1.5.1 33 | Nbr IP : 10.1.5.5 34 | LclId : 1209 35 | RmtId : 2 36 | Unresvd BW: 37 | BW[0] : 10000000 kbps 38 | BW[1] : 10000000 kbps 39 | BW[2] : 10000000 kbps 40 | BW[3] : 10000000 kbps 41 | BW[4] : 10000000 kbps 42 | BW[5] : 10000000 kbps 43 | BW[6] : 10000000 kbps 44 | BW[7] : 10000000 kbps 45 | Resvble BW: 10000000 kbps 46 | MaxLink BW: 10000000 kbps 47 | Admin Grp : 0x0 48 | Nbr : DR14.00 49 | Default Metric : 10 50 | Sub TLV Len : 74 51 | IF Addr : 10.1.6.1 52 | Nbr IP : 10.1.6.6 53 | LclId : 1400 54 | RmtId : 2 55 | Unresvd BW: 56 | BW[0] : 10000000 kbps 57 | BW[1] : 10000000 kbps 58 | BW[2] : 10000000 kbps 59 | BW[3] : 10000000 kbps 60 | BW[4] : 10000000 kbps 61 | BW[5] : 10000000 kbps 62 | BW[6] : 10000000 kbps 63 | BW[7] : 10000000 kbps 64 | Resvble BW: 10000000 kbps 65 | MaxLink BW: 10000000 kbps 66 | Admin Grp : 0x0 67 | TE IP Reach : 68 | Default Metric : 0 69 | Control Info: , prefLen 32 70 | Prefix : 10.0.0.1 71 | Default Metric : 0 72 | Control Info: , prefLen 32 73 | Prefix : 10.0.1.1 74 | I/F Addresses : 75 | I/F Address : 10.0.1.1 76 | Router Cap : 10.0.0.1, D:0, S:0 77 | 78 | ------------------------------------------------------------------------------- 79 | LSP ID : AR12.00-00 Level : L1 80 | Sequence : 0x1bf8 Checksum : 0x6f8e Lifetime : 663 81 | Version : 1 Pkt Type : 18 Pkt Ver : 1 82 | Attributes: L1 Max Area : 3 Alloc Len : 139 83 | SYS ID : 0100.0000.0002 SysID Len : 6 Used Len : 139 84 | 85 | TLVs : 86 | Area Addresses: 87 | Area Address : (3) 49.0001 88 | Supp Protocols: 89 | Protocols : IPv4 90 | IS-Hostname : AR12 91 | Router ID : 92 | Router ID : 10.0.0.2 93 | I/F Addresses : 94 | I/F Address : 10.0.0.2 95 | I/F Address : 10.2.5.2 96 | I/F Address : 10.2.6.2 97 | TE IS Nbrs : 98 | Nbr : DR14.00 99 | Default Metric : 10 100 | Sub TLV Len : 12 101 | IF Addr : 10.2.6.2 102 | Nbr IP : 10.2.6.6 103 | TE IS Nbrs : 104 | Nbr : DR13.00 105 | Default Metric : 10 106 | Sub TLV Len : 12 107 | IF Addr : 10.2.5.2 108 | Nbr IP : 10.2.5.5 109 | TE IP Reach : 110 | Default Metric : 0 111 | Control Info: , prefLen 32 112 | Prefix : 10.0.0.2 113 | Default Metric : 10 114 | Control Info: , prefLen 24 115 | Prefix : 10.2.5.0 116 | Default Metric : 10 117 | Control Info: , prefLen 24 118 | Prefix : 10.2.6.0 119 | 120 | ------------------------------------------------------------------------------- 121 | LSP ID : DR13.00-00 Level : L1 122 | Sequence : 0x2f48 Checksum : 0x6e90 Lifetime : 1098 123 | Version : 1 Pkt Type : 18 Pkt Ver : 1 124 | Attributes: L1 Max Area : 3 Alloc Len : 360 125 | SYS ID : 0100.0000.1005 SysID Len : 6 Used Len : 360 126 | 127 | TLVs : 128 | Area Addresses: 129 | Area Address : (3) 49.0001 130 | Supp Protocols: 131 | Protocols : IPv4 132 | IS-Hostname : DR13 133 | Router ID : 134 | Router ID : 10.0.1.5 135 | I/F Addresses : 136 | I/F Address : 10.0.0.5 137 | I/F Address : 10.0.1.5 138 | I/F Address : 10.1.5.5 139 | I/F Address : 10.2.5.5 140 | I/F Address : 10.5.6.5 141 | TE IS Nbrs : 142 | Nbr : DR14.00 143 | Default Metric : 10 144 | Sub TLV Len : 69 145 | IF Addr : 10.5.6.5 146 | Nbr IP : 10.5.6.6 147 | MaxLink BW: 199999995 kbps 148 | Resvble BW: 199999995 kbps 149 | Unresvd BW: 150 | BW[0] : 199999995 kbps 151 | BW[1] : 199999995 kbps 152 | BW[2] : 199999995 kbps 153 | BW[3] : 199999995 kbps 154 | BW[4] : 199999995 kbps 155 | BW[5] : 199999995 kbps 156 | BW[6] : 199999995 kbps 157 | BW[7] : 199999995 kbps 158 | Admin Grp : 0x0 159 | TE Metric : 10 160 | TE IS Nbrs : 161 | Nbr : AR12.00 162 | Default Metric : 10 163 | Sub TLV Len : 69 164 | IF Addr : 10.2.5.5 165 | Nbr IP : 10.2.5.2 166 | MaxLink BW: 10000000 kbps 167 | Resvble BW: 10000000 kbps 168 | Unresvd BW: 169 | BW[0] : 10000000 kbps 170 | BW[1] : 10000000 kbps 171 | BW[2] : 10000000 kbps 172 | BW[3] : 10000000 kbps 173 | BW[4] : 10000000 kbps 174 | BW[5] : 10000000 kbps 175 | BW[6] : 10000000 kbps 176 | BW[7] : 10000000 kbps 177 | Admin Grp : 0x0 178 | TE Metric : 10 179 | TE IS Nbrs : 180 | Nbr : MX480-2_5-Core_stand-AR11.00 181 | Default Metric : 10 182 | Sub TLV Len : 69 183 | IF Addr : 10.1.5.5 184 | Nbr IP : 10.1.5.1 185 | MaxLink BW: 10000000 kbps 186 | Resvble BW: 10000000 kbps 187 | Unresvd BW: 188 | BW[0] : 10000000 kbps 189 | BW[1] : 10000000 kbps 190 | BW[2] : 10000000 kbps 191 | BW[3] : 10000000 kbps 192 | BW[4] : 10000000 kbps 193 | BW[5] : 10000000 kbps 194 | BW[6] : 10000000 kbps 195 | BW[7] : 10000000 kbps 196 | Admin Grp : 0x0 197 | TE Metric : 10 198 | TE IP Reach : 199 | Default Metric : 0 200 | Control Info: , prefLen 32 201 | Prefix : 10.0.0.5 202 | Default Metric : 0 203 | Control Info: , prefLen 32 204 | Prefix : 10.0.1.5 205 | Default Metric : 10 206 | Control Info: , prefLen 24 207 | Prefix : 10.1.5.0 208 | Default Metric : 10 209 | Control Info: , prefLen 24 210 | Prefix : 10.2.5.0 211 | Default Metric : 10 212 | Control Info: , prefLen 24 213 | Prefix : 10.5.6.0 214 | 215 | ------------------------------------------------------------------------------- 216 | LSP ID : DR14.00-00 Level : L1 217 | Sequence : 0x2f35 Checksum : 0x591 Lifetime : 747 218 | Version : 1 Pkt Type : 18 Pkt Ver : 1 219 | Attributes: L1 Max Area : 3 Alloc Len : 1492 220 | SYS ID : 0100.0000.1006 SysID Len : 6 Used Len : 372 221 | 222 | TLVs : 223 | Area Addresses: 224 | Area Address : (3) 49.0001 225 | Supp Protocols: 226 | Protocols : IPv4 227 | IS-Hostname : DR14 228 | Router ID : 229 | Router ID : 10.0.1.6 230 | I/F Addresses : 231 | I/F Address : 10.0.0.6 232 | I/F Address : 10.0.1.6 233 | I/F Address : 10.1.6.6 234 | I/F Address : 10.2.6.6 235 | I/F Address : 10.5.6.6 236 | I/F Address : 10.10.6.6 237 | TE IS Nbrs : 238 | Nbr : DR13.00 239 | Default Metric : 10 240 | Sub TLV Len : 69 241 | IF Addr : 10.5.6.6 242 | Nbr IP : 10.5.6.5 243 | MaxLink BW: 199999995 kbps 244 | Resvble BW: 199999995 kbps 245 | Unresvd BW: 246 | BW[0] : 199999995 kbps 247 | BW[1] : 199999995 kbps 248 | BW[2] : 199999995 kbps 249 | BW[3] : 199999995 kbps 250 | BW[4] : 199999995 kbps 251 | BW[5] : 199999995 kbps 252 | BW[6] : 199999995 kbps 253 | BW[7] : 199999995 kbps 254 | Admin Grp : 0x0 255 | TE Metric : 10 256 | TE IS Nbrs : 257 | Nbr : AR12.00 258 | Default Metric : 10 259 | Sub TLV Len : 69 260 | IF Addr : 10.2.6.6 261 | Nbr IP : 10.2.6.2 262 | MaxLink BW: 10000000 kbps 263 | Resvble BW: 10000000 kbps 264 | Unresvd BW: 265 | BW[0] : 10000000 kbps 266 | BW[1] : 10000000 kbps 267 | BW[2] : 10000000 kbps 268 | BW[3] : 10000000 kbps 269 | BW[4] : 10000000 kbps 270 | BW[5] : 10000000 kbps 271 | BW[6] : 10000000 kbps 272 | BW[7] : 10000000 kbps 273 | Admin Grp : 0x0 274 | TE Metric : 10 275 | TE IS Nbrs : 276 | Nbr : MX480-2_5-Core_stand-AR11.00 277 | Default Metric : 10 278 | Sub TLV Len : 69 279 | IF Addr : 10.1.6.6 280 | Nbr IP : 10.1.6.1 281 | MaxLink BW: 10000000 kbps 282 | Resvble BW: 10000000 kbps 283 | Unresvd BW: 284 | BW[0] : 10000000 kbps 285 | BW[1] : 10000000 kbps 286 | BW[2] : 10000000 kbps 287 | BW[3] : 10000000 kbps 288 | BW[4] : 10000000 kbps 289 | BW[5] : 10000000 kbps 290 | BW[6] : 10000000 kbps 291 | BW[7] : 10000000 kbps 292 | Admin Grp : 0x0 293 | TE Metric : 10 294 | TE IP Reach : 295 | Default Metric : 0 296 | Control Info: , prefLen 32 297 | Prefix : 10.0.0.6 298 | Default Metric : 0 299 | Control Info: , prefLen 32 300 | Prefix : 10.0.1.6 301 | Default Metric : 10 302 | Control Info: , prefLen 24 303 | Prefix : 10.1.6.0 304 | Default Metric : 10 305 | Control Info: , prefLen 24 306 | Prefix : 10.2.6.0 307 | Default Metric : 10 308 | Control Info: , prefLen 24 309 | Prefix : 10.5.6.0 310 | Default Metric : 10 311 | Control Info: , prefLen 24 312 | Prefix : 10.10.6.0 313 | 314 | Level (1) LSP Count : 4 315 | 316 | Displaying Level 2 database 317 | ------------------------------------------------------------------------------- 318 | Level (2) LSP Count : 0 319 | ------------------------------------------------------------------------------- 320 | Control Info : D = Prefix Leaked Down 321 | S = Sub-TLVs Present 322 | Attribute Flags : N = Node Flag 323 | R = Re-advertisement Flag 324 | X = External Prefix Flag 325 | E = Entropy Label Capability (ELC) Flag 326 | Adj-SID Flags : v4/v6 = IPv4 or IPv6 Address-Family 327 | B = Backup Flag 328 | V = Adj-SID carries a value 329 | L = value/index has local significance 330 | S = Set of Adjacencies 331 | P = Persistently allocated 332 | Prefix-SID Flags : R = Re-advertisement Flag 333 | N = Node-SID Flag 334 | nP = no penultimate hop POP 335 | E = Explicit-Null Flag 336 | V = Prefix-SID carries a value 337 | L = value/index has local significance 338 | Lbl-Binding Flags: v4/v6 = IPv4 or IPv6 Address-Family 339 | M = Mirror Context Flag 340 | S = SID/Label Binding flooding 341 | D = Prefix Leaked Down 342 | A = Attached Flag 343 | SABM-flags Flags: R = RSVP-TE 344 | S = SR-TE 345 | F = LFA 346 | X = FLEX-ALGO 347 | FAD-flags Flags: M = Prefix Metric 348 | =============================================================================== 349 | *A:DR14# 350 | 351 | -------------------------------------------------------------------------------- /test_files/sh_ospf_router_det_jun.txt: -------------------------------------------------------------------------------- 1 | lab@DR1# run show ospf database router detail | no-more 2 | 3 | OSPF database, Area 0.0.0.0 4 | Type ID Adv Rtr Seq Age Opt Cksum Len 5 | Router 10.10.10.1 10.10.10.1 0x80000004 1082 0x22 0xb831 84 6 | bits 0x0, link count 5 7 | id 10.10.10.253, data 172.16.25.6, Type PointToPoint (1) 8 | Topology count: 0, Default metric: 1 9 | id 172.16.25.4, data 255.255.255.252, Type Stub (3) 10 | Topology count: 0, Default metric: 1 11 | id 10.10.10.2, data 172.16.25.9, Type PointToPoint (1) 12 | Topology count: 0, Default metric: 1 13 | id 172.16.25.8, data 255.255.255.252, Type Stub (3) 14 | Topology count: 0, Default metric: 1 15 | id 10.10.10.1, data 255.255.255.255, Type Stub (3) 16 | Topology count: 0, Default metric: 0 17 | Topology default (ID 0) 18 | Type: PointToPoint, Node ID: 10.10.10.2 19 | Metric: 1, Bidirectional 20 | Type: PointToPoint, Node ID: 10.10.10.253 21 | Metric: 1, Bidirectional 22 | Router 10.10.10.2 10.10.10.2 0x8000000c 1091 0x22 0x93b8 108 23 | bits 0x0, link count 7 24 | id 172.16.25.70, data 172.16.25.69, Type Transit (2) 25 | Topology count: 0, Default metric: 1 26 | id 10.10.10.1, data 172.16.25.10, Type PointToPoint (1) 27 | Topology count: 0, Default metric: 1 28 | id 172.16.25.8, data 255.255.255.252, Type Stub (3) 29 | Topology count: 0, Default metric: 1 30 | id 10.10.10.3, data 172.16.25.13, Type PointToPoint (1) 31 | Topology count: 0, Default metric: 1 32 | id 172.16.25.12, data 255.255.255.252, Type Stub (3) 33 | Topology count: 0, Default metric: 1 34 | id 172.16.25.62, data 172.16.25.61, Type Transit (2) 35 | Topology count: 0, Default metric: 1 36 | id 10.10.10.2, data 255.255.255.255, Type Stub (3) 37 | Topology count: 0, Default metric: 0 38 | Topology default (ID 0) 39 | Type: Transit, Node ID: 172.16.25.62 40 | Metric: 1, Bidirectional 41 | Type: PointToPoint, Node ID: 10.10.10.3 42 | Metric: 1, Bidirectional 43 | Type: PointToPoint, Node ID: 10.10.10.1 44 | Metric: 1, Bidirectional 45 | Type: Transit, Node ID: 172.16.25.70 46 | Metric: 1, Bidirectional 47 | Router 10.10.10.3 10.10.10.3 0x80000008 378 0x22 0x5c5d 84 48 | bits 0x0, link count 5 49 | id 10.10.10.4, data 172.16.25.17, Type PointToPoint (1) 50 | Topology count: 0, Default metric: 1 51 | id 172.16.25.16, data 255.255.255.252, Type Stub (3) 52 | Topology count: 0, Default metric: 1 53 | id 10.10.10.2, data 172.16.25.14, Type PointToPoint (1) 54 | Topology count: 0, Default metric: 1 55 | id 172.16.25.12, data 255.255.255.252, Type Stub (3) 56 | Topology count: 0, Default metric: 1 57 | id 10.10.10.3, data 255.255.255.255, Type Stub (3) 58 | Topology count: 0, Default metric: 0 59 | Topology default (ID 0) 60 | Type: PointToPoint, Node ID: 10.10.10.2 61 | Metric: 1, Bidirectional 62 | Type: PointToPoint, Node ID: 10.10.10.4 63 | Metric: 1, Bidirectional 64 | Router 10.10.10.4 10.10.10.4 0x80000005 914 0x22 0x7334 84 65 | bits 0x0, link count 5 66 | id 10.10.10.3, data 172.16.25.18, Type PointToPoint (1) 67 | Topology count: 0, Default metric: 1 68 | id 172.16.25.16, data 255.255.255.252, Type Stub (3) 69 | Topology count: 0, Default metric: 1 70 | id 10.10.10.5, data 172.16.25.21, Type PointToPoint (1) 71 | Topology count: 0, Default metric: 1 72 | id 172.16.25.20, data 255.255.255.252, Type Stub (3) 73 | Topology count: 0, Default metric: 1 74 | id 10.10.10.4, data 255.255.255.255, Type Stub (3) 75 | Topology count: 0, Default metric: 0 76 | Topology default (ID 0) 77 | Type: PointToPoint, Node ID: 10.10.10.5 78 | Metric: 1, Bidirectional 79 | Type: PointToPoint, Node ID: 10.10.10.3 80 | Metric: 1, Bidirectional 81 | Router 10.10.10.5 10.10.10.5 0x80000009 1964 0x22 0xdab9 84 82 | bits 0x0, link count 5 83 | id 10.10.10.4, data 172.16.25.22, Type PointToPoint (1) 84 | Topology count: 0, Default metric: 1 85 | id 172.16.25.20, data 255.255.255.252, Type Stub (3) 86 | Topology count: 0, Default metric: 1 87 | id 10.10.10.254, data 172.16.25.26, Type PointToPoint (1) 88 | Topology count: 0, Default metric: 1 89 | id 172.16.25.24, data 255.255.255.252, Type Stub (3) 90 | Topology count: 0, Default metric: 1 91 | id 10.10.10.5, data 255.255.255.255, Type Stub (3) 92 | Topology count: 0, Default metric: 0 93 | Topology default (ID 0) 94 | Type: PointToPoint, Node ID: 10.10.10.254 95 | Metric: 1, Bidirectional 96 | Type: PointToPoint, Node ID: 10.10.10.4 97 | Metric: 1, Bidirectional 98 | Router 10.10.10.6 10.10.10.6 0x80000003 1178 0x22 0x274 84 99 | bits 0x0, link count 5 100 | id 10.10.10.7, data 172.16.25.33, Type PointToPoint (1) 101 | Topology count: 0, Default metric: 1 102 | id 172.16.25.32, data 255.255.255.252, Type Stub (3) 103 | Topology count: 0, Default metric: 1 104 | id 10.10.10.253, data 172.16.25.30, Type PointToPoint (1) 105 | Topology count: 0, Default metric: 1 106 | id 172.16.25.28, data 255.255.255.252, Type Stub (3) 107 | Topology count: 0, Default metric: 1 108 | id 10.10.10.6, data 255.255.255.255, Type Stub (3) 109 | Topology count: 0, Default metric: 0 110 | Topology default (ID 0) 111 | Type: PointToPoint, Node ID: 10.10.10.253 112 | Metric: 1, Bidirectional 113 | Type: PointToPoint, Node ID: 10.10.10.7 114 | Metric: 1, Bidirectional 115 | Router 10.10.10.7 10.10.10.7 0x80000004 1182 0x22 0xff59 84 116 | bits 0x0, link count 5 117 | id 10.10.10.6, data 172.16.25.34, Type PointToPoint (1) 118 | Topology count: 0, Default metric: 1 119 | id 172.16.25.32, data 255.255.255.252, Type Stub (3) 120 | Topology count: 0, Default metric: 1 121 | id 10.10.10.8, data 172.16.25.37, Type PointToPoint (1) 122 | Topology count: 0, Default metric: 1 123 | id 172.16.25.36, data 255.255.255.252, Type Stub (3) 124 | Topology count: 0, Default metric: 1 125 | id 10.10.10.7, data 255.255.255.255, Type Stub (3) 126 | Topology count: 0, Default metric: 0 127 | Topology default (ID 0) 128 | Type: PointToPoint, Node ID: 10.10.10.8 129 | Metric: 1, Bidirectional 130 | Type: PointToPoint, Node ID: 10.10.10.6 131 | Metric: 1, Bidirectional 132 | Router 10.10.10.8 10.10.10.8 0x80000006 1975 0x22 0x340e 84 133 | bits 0x0, link count 5 134 | id 10.10.10.7, data 172.16.25.38, Type PointToPoint (1) 135 | Topology count: 0, Default metric: 1 136 | id 172.16.25.36, data 255.255.255.252, Type Stub (3) 137 | Topology count: 0, Default metric: 1 138 | id 10.10.10.9, data 172.16.25.41, Type PointToPoint (1) 139 | Topology count: 0, Default metric: 1 140 | id 172.16.25.40, data 255.255.255.252, Type Stub (3) 141 | Topology count: 0, Default metric: 1 142 | id 10.10.10.8, data 255.255.255.255, Type Stub (3) 143 | Topology count: 0, Default metric: 0 144 | Topology default (ID 0) 145 | Type: PointToPoint, Node ID: 10.10.10.9 146 | Metric: 1, Bidirectional 147 | Type: PointToPoint, Node ID: 10.10.10.7 148 | Metric: 1, Bidirectional 149 | Router 10.10.10.9 10.10.10.9 0x80000013 42 0x22 0x76f0 120 150 | bits 0x0, link count 8 151 | id 10.10.10.11, data 172.16.25.57, Type PointToPoint (1) 152 | Topology count: 0, Default metric: 1 153 | id 172.16.25.56, data 255.255.255.252, Type Stub (3) 154 | Topology count: 0, Default metric: 1 155 | id 172.16.25.81, data 172.16.25.82, Type Transit (2) 156 | Topology count: 0, Default metric: 1 157 | id 10.10.10.8, data 172.16.25.42, Type PointToPoint (1) 158 | Topology count: 0, Default metric: 1 159 | id 172.16.25.40, data 255.255.255.252, Type Stub (3) 160 | Topology count: 0, Default metric: 1 161 | id 10.10.10.254, data 172.16.25.46, Type PointToPoint (1) 162 | Topology count: 0, Default metric: 1 163 | id 172.16.25.44, data 255.255.255.252, Type Stub (3) 164 | Topology count: 0, Default metric: 1 165 | id 10.10.10.9, data 255.255.255.255, Type Stub (3) 166 | Topology count: 0, Default metric: 0 167 | Topology default (ID 0) 168 | Type: PointToPoint, Node ID: 10.10.10.254 169 | Metric: 1, Bidirectional 170 | Type: PointToPoint, Node ID: 10.10.10.8 171 | Metric: 1, Bidirectional 172 | Type: Transit, Node ID: 172.16.25.81 173 | Metric: 1, Bidirectional 174 | Type: PointToPoint, Node ID: 10.10.10.11 175 | Metric: 1, Bidirectional 176 | Router 10.10.10.10 10.10.10.10 0x8000000f 1965 0x22 0x51d6 72 177 | bits 0x0, link count 4 178 | id 172.16.25.49, data 172.16.25.50, Type Transit (2) 179 | Topology count: 0, Default metric: 1 180 | id 172.16.25.66, data 172.16.25.65, Type Transit (2) 181 | Topology count: 0, Default metric: 1 182 | id 172.16.25.53, data 172.16.25.53, Type Transit (2) 183 | Topology count: 0, Default metric: 1 184 | id 10.10.10.10, data 255.255.255.255, Type Stub (3) 185 | Topology count: 0, Default metric: 0 186 | Topology default (ID 0) 187 | Type: Transit, Node ID: 172.16.25.53 188 | Metric: 1, Bidirectional 189 | Type: Transit, Node ID: 172.16.25.66 190 | Metric: 1, Bidirectional 191 | Type: Transit, Node ID: 172.16.25.49 192 | Metric: 1, Bidirectional 193 | Router 10.10.10.11 10.10.10.11 0x8000000e 36 0x22 0x22c5 72 194 | bits 0x0, link count 4 195 | id 10.10.10.9, data 172.16.25.58, Type PointToPoint (1) 196 | Topology count: 0, Default metric: 1 197 | id 172.16.25.56, data 255.255.255.252, Type Stub (3) 198 | Topology count: 0, Default metric: 1 199 | id 172.16.25.81, data 172.16.25.83, Type Transit (2) 200 | Topology count: 0, Default metric: 1 201 | id 10.10.10.11, data 255.255.255.255, Type Stub (3) 202 | Topology count: 0, Default metric: 0 203 | Topology default (ID 0) 204 | Type: Transit, Node ID: 172.16.25.81 205 | Metric: 1, Bidirectional 206 | Type: PointToPoint, Node ID: 10.10.10.9 207 | Metric: 1, Bidirectional 208 | Router *10.10.10.253 10.10.10.253 0x80000009 1186 0x22 0x5763 120 209 | bits 0x0, link count 8 210 | id 10.10.10.1, data 172.16.25.5, Type PointToPoint (1) 211 | Topology count: 0, Default metric: 1 212 | id 172.16.25.4, data 255.255.255.252, Type Stub (3) 213 | Topology count: 0, Default metric: 1 214 | id 172.16.25.49, data 172.16.25.49, Type Transit (2) 215 | Topology count: 0, Default metric: 1 216 | id 10.10.10.254, data 172.16.25.1, Type PointToPoint (1) 217 | Topology count: 0, Default metric: 1 218 | id 172.16.25.0, data 255.255.255.252, Type Stub (3) 219 | Topology count: 0, Default metric: 1 220 | id 10.10.10.6, data 172.16.25.29, Type PointToPoint (1) 221 | Topology count: 0, Default metric: 1 222 | id 172.16.25.28, data 255.255.255.252, Type Stub (3) 223 | Topology count: 0, Default metric: 1 224 | id 10.10.10.253, data 255.255.255.255, Type Stub (3) 225 | Topology count: 0, Default metric: 0 226 | Topology default (ID 0) 227 | Type: PointToPoint, Node ID: 10.10.10.6 228 | Metric: 1, Bidirectional 229 | Type: PointToPoint, Node ID: 10.10.10.254 230 | Metric: 1, Bidirectional 231 | Type: Transit, Node ID: 172.16.25.49 232 | Metric: 1, Bidirectional 233 | Type: PointToPoint, Node ID: 10.10.10.1 234 | Metric: 1, Bidirectional 235 | Router 10.10.10.254 10.10.10.254 0x80000014 36 0x22 0x54a1 132 236 | bits 0x0, link count 9 237 | id 172.16.25.81, data 172.16.25.81, Type Transit (2) 238 | Topology count: 0, Default metric: 1 239 | id 10.10.10.253, data 172.16.25.2, Type PointToPoint (1) 240 | Topology count: 0, Default metric: 1 241 | id 172.16.25.0, data 255.255.255.252, Type Stub (3) 242 | Topology count: 0, Default metric: 1 243 | id 10.10.10.9, data 172.16.25.45, Type PointToPoint (1) 244 | Topology count: 0, Default metric: 1 245 | id 172.16.25.44, data 255.255.255.252, Type Stub (3) 246 | Topology count: 0, Default metric: 1 247 | id 172.16.25.53, data 172.16.25.54, Type Transit (2) 248 | Topology count: 0, Default metric: 1 249 | id 10.10.10.5, data 172.16.25.25, Type PointToPoint (1) 250 | Topology count: 0, Default metric: 1 251 | id 172.16.25.24, data 255.255.255.252, Type Stub (3) 252 | Topology count: 0, Default metric: 1 253 | id 10.10.10.254, data 255.255.255.255, Type Stub (3) 254 | Topology count: 0, Default metric: 0 255 | Topology default (ID 0) 256 | Type: PointToPoint, Node ID: 10.10.10.5 257 | Metric: 1, Bidirectional 258 | Type: Transit, Node ID: 172.16.25.53 259 | Metric: 1, Bidirectional 260 | Type: PointToPoint, Node ID: 10.10.10.9 261 | Metric: 1, Bidirectional 262 | Type: PointToPoint, Node ID: 10.10.10.253 263 | Metric: 1, Bidirectional 264 | Type: Transit, Node ID: 172.16.25.81 265 | Metric: 1, Bidirectional 266 | Router 10.10.20.1 10.10.20.1 0x80000008 2026 0x22 0x5fd0 60 267 | bits 0x0, link count 3 268 | id 172.16.25.70, data 172.16.25.70, Type Transit (2) 269 | Topology count: 0, Default metric: 1 270 | id 172.16.25.62, data 172.16.25.62, Type Transit (2) 271 | Topology count: 0, Default metric: 1 272 | id 10.10.20.1, data 255.255.255.255, Type Stub (3) 273 | Topology count: 0, Default metric: 0 274 | Topology default (ID 0) 275 | Type: Transit, Node ID: 172.16.25.62 276 | Metric: 1, Bidirectional 277 | Type: Transit, Node ID: 172.16.25.70 278 | Metric: 1, Bidirectional 279 | Router 10.10.20.2 10.10.20.2 0x8000000b 1301 0x22 0x3535 48 280 | bits 0x0, link count 2 281 | id 172.16.25.66, data 172.16.25.66, Type Transit (2) 282 | Topology count: 0, Default metric: 1 283 | id 10.10.20.2, data 255.255.255.255, Type Stub (3) 284 | Topology count: 0, Default metric: 0 285 | Topology default (ID 0) 286 | Type: Transit, Node ID: 172.16.25.66 287 | Metric: 1, Bidirectional 288 | 289 | [edit] 290 | lab@DR1# 291 | 292 | -------------------------------------------------------------------------------- /test_files/sh_isis_db_det_cisco.txt: -------------------------------------------------------------------------------- 1 | AR16#sh isis database detail 2 | 3 | IS-IS Level-1 Link State Database: 4 | LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL 5 | AR16.00-00 * 0x00000003 0x02BD 532/* 0/0/0 6 | Area Address: 49.0002 7 | NLPID: 0xCC 8 | Hostname: AR16 9 | Metric: 10 IS AR16.01 10 | IP Address: 10.10.10.16 11 | Metric: 0 IP 10.10.10.16 255.255.255.255 12 | Metric: 10 IP 172.16.25.72 255.255.255.252 13 | AR16.01-00 * 0x00000001 0xC1D0 532/* 0/0/0 14 | Metric: 0 IS AR16.00 15 | IS-IS Level-2 Link State Database: 16 | LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL 17 | AR1.00-00 0x00000003 0x3C4B 955/1194 0/0/0 18 | Area Address: 49.0002 19 | Code: 14 Length: 2 20 | NLPID: 0xCC 0x8E 21 | Router ID: 10.10.10.1 22 | IP Address: 10.10.10.1 23 | Hostname: AR1 24 | Metric: 10 IP 172.16.25.4 255.255.255.252 25 | Metric: 10 IP 172.16.25.8 255.255.255.252 26 | Metric: 0 IP 10.10.10.1 255.255.255.255 27 | Metric: 10 IP 172.16.25.4/30 28 | Metric: 10 IP 172.16.25.8/30 29 | Metric: 0 IP 10.10.10.1/32 30 | Metric: 10 IS AR2.00 31 | Metric: 10 IS DR1.00 32 | Metric: 10 IS-Extended AR2.00 33 | Metric: 10 IS-Extended DR1.00 34 | AR2.00-00 0x0000000D 0x47E9 1058/1192 0/0/0 35 | Area Address: 49.0002 36 | Code: 14 Length: 2 37 | NLPID: 0xCC 0x8E 38 | Router ID: 10.10.10.2 39 | IP Address: 10.10.10.2 40 | Hostname: AR2 41 | Metric: 10 IP 172.16.25.68 255.255.255.252 42 | Metric: 10 IP 172.16.25.8 255.255.255.252 43 | Metric: 10 IP 172.16.25.12 255.255.255.252 44 | Metric: 10 IP 172.16.25.60 255.255.255.252 45 | Metric: 0 IP 10.10.10.2 255.255.255.255 46 | Metric: 10 IP 172.16.25.68/30 47 | Metric: 10 IP 172.16.25.8/30 48 | Metric: 10 IP 172.16.25.12/30 49 | Metric: 10 IP 172.16.25.60/30 50 | Metric: 0 IP 10.10.10.2/32 51 | Metric: 10 IS ASW1.02 52 | Metric: 10 IS AR3.00 53 | Metric: 10 IS AR1.00 54 | Metric: 10 IS ASW1.03 55 | Metric: 10 IS-Extended ASW1.02 56 | Metric: 10 IS-Extended AR3.00 57 | Metric: 10 IS-Extended AR1.00 58 | Metric: 10 IS-Extended ASW1.03 59 | AR3.00-00 0x00000003 0xB923 989/1192 0/0/0 60 | Area Address: 49.0002 61 | Code: 14 Length: 2 62 | NLPID: 0xCC 0x8E 63 | Router ID: 10.10.10.3 64 | IP Address: 10.10.10.3 65 | Hostname: AR3 66 | Metric: 10 IP 172.16.25.16 255.255.255.252 67 | Metric: 10 IP 172.16.25.12 255.255.255.252 68 | Metric: 0 IP 10.10.10.3 255.255.255.255 69 | Metric: 10 IP 172.16.25.16/30 70 | Metric: 10 IP 172.16.25.12/30 71 | Metric: 0 IP 10.10.10.3/32 72 | Metric: 10 IS AR2.00 73 | Metric: 10 IS AR4.00 74 | Metric: 10 IS-Extended AR2.00 75 | Metric: 10 IS-Extended AR4.00 76 | AR4.00-00 0x00000003 0xD3E0 989/1194 0/0/0 77 | Area Address: 49.0002 78 | Code: 14 Length: 2 79 | NLPID: 0xCC 0x8E 80 | Router ID: 10.10.10.4 81 | IP Address: 10.10.10.4 82 | Hostname: AR4 83 | Metric: 10 IP 172.16.25.16 255.255.255.252 84 | Metric: 10 IP 172.16.25.20 255.255.255.252 85 | Metric: 0 IP 10.10.10.4 255.255.255.255 86 | Metric: 10 IP 172.16.25.16/30 87 | Metric: 10 IP 172.16.25.20/30 88 | Metric: 0 IP 10.10.10.4/32 89 | Metric: 10 IS AR5.00 90 | Metric: 10 IS AR3.00 91 | Metric: 10 IS-Extended AR5.00 92 | Metric: 10 IS-Extended AR3.00 93 | AR5.00-00 0x00000003 0x9B48 963/1196 0/0/0 94 | Area Address: 49.0002 95 | Code: 14 Length: 2 96 | NLPID: 0xCC 0x8E 97 | Router ID: 10.10.10.5 98 | IP Address: 10.10.10.5 99 | Hostname: AR5 100 | Metric: 10 IP 172.16.25.20 255.255.255.252 101 | Metric: 10 IP 172.16.25.24 255.255.255.252 102 | Metric: 0 IP 10.10.10.5 255.255.255.255 103 | Metric: 10 IP 172.16.25.20/30 104 | Metric: 10 IP 172.16.25.24/30 105 | Metric: 0 IP 10.10.10.5/32 106 | Metric: 10 IS DR2.00 107 | Metric: 10 IS AR4.00 108 | Metric: 10 IS-Extended DR2.00 109 | Metric: 10 IS-Extended AR4.00 110 | AR6.00-00 0x00000003 0x7725 858/1194 0/0/0 111 | Area Address: 49.0002 112 | Code: 14 Length: 2 113 | NLPID: 0xCC 0x8E 114 | Router ID: 10.10.10.6 115 | IP Address: 10.10.10.6 116 | Hostname: AR6 117 | Metric: 10 IP 172.16.25.32 255.255.255.252 118 | Metric: 10 IP 172.16.25.28 255.255.255.252 119 | Metric: 0 IP 10.10.10.6 255.255.255.255 120 | Metric: 10 IP 172.16.25.32/30 121 | Metric: 10 IP 172.16.25.28/30 122 | Metric: 0 IP 10.10.10.6/32 123 | Metric: 10 IS DR1.00 124 | Metric: 10 IS AR7.00 125 | Metric: 10 IS-Extended DR1.00 126 | Metric: 10 IS-Extended AR7.00 127 | AR7.00-00 0x00000003 0xEB2A 1006/1192 0/0/0 128 | Area Address: 49.0002 129 | Code: 14 Length: 2 130 | NLPID: 0xCC 0x8E 131 | Router ID: 10.10.10.7 132 | IP Address: 10.10.10.7 133 | Hostname: AR7 134 | Metric: 10 IP 172.16.25.32 255.255.255.252 135 | Metric: 10 IP 172.16.25.36 255.255.255.252 136 | Metric: 0 IP 10.10.10.7 255.255.255.255 137 | Metric: 10 IP 172.16.25.32/30 138 | Metric: 10 IP 172.16.25.36/30 139 | Metric: 0 IP 10.10.10.7/32 140 | Metric: 10 IS AR6.00 141 | Metric: 10 IS AR8.00 142 | Metric: 10 IS-Extended AR6.00 143 | Metric: 10 IS-Extended AR8.00 144 | AR8.00-00 0x00000004 0xBF28 1033/1194 0/0/0 145 | Area Address: 49.0002 146 | Code: 14 Length: 2 147 | NLPID: 0xCC 0x8E 148 | Router ID: 10.10.10.8 149 | IP Address: 10.10.10.8 150 | Hostname: AR8 151 | Metric: 0 IP 10.10.10.8 255.255.255.255 152 | Metric: 10 IP 172.16.25.36 255.255.255.252 153 | Metric: 10 IP 172.16.25.40 255.255.255.252 154 | Metric: 0 IP 10.10.10.8/32 155 | Metric: 10 IP 172.16.25.36/30 156 | Metric: 10 IP 172.16.25.40/30 157 | Metric: 10 IS AR7.00 158 | Metric: 10 IS AR9.00 159 | Metric: 10 IS-Extended AR7.00 160 | Metric: 10 IS-Extended AR9.00 161 | AR9.00-00 0x00000005 0x6616 1033/1196 0/0/0 162 | Area Address: 49.0002 163 | Code: 14 Length: 2 164 | NLPID: 0xCC 0x8E 165 | Router ID: 10.10.10.9 166 | IP Address: 10.10.10.9 167 | Hostname: AR9 168 | Metric: 10 IP 172.16.25.56 255.255.255.252 169 | Metric: 10 IP 172.16.25.80 255.255.255.248 170 | Metric: 10 IP 172.16.25.40 255.255.255.252 171 | Metric: 10 IP 172.16.25.44 255.255.255.252 172 | Metric: 0 IP 10.10.10.9 255.255.255.255 173 | Metric: 10 IP 172.16.25.56/30 174 | Metric: 10 IP 172.16.25.80/29 175 | Metric: 10 IP 172.16.25.40/30 176 | Metric: 10 IP 172.16.25.44/30 177 | Metric: 0 IP 10.10.10.9/32 178 | Metric: 10 IS DR2.03 179 | Metric: 10 IS DR2.00 180 | Metric: 10 IS AR11.02 181 | Metric: 10 IS AR8.00 182 | Metric: 10 IS-Extended DR2.03 183 | Metric: 10 IS-Extended DR2.00 184 | Metric: 10 IS-Extended AR11.02 185 | Metric: 10 IS-Extended AR8.00 186 | AR10.00-00 0x00000005 0xED09 773/1196 0/0/0 187 | Area Address: 49.0002 188 | Code: 14 Length: 2 189 | NLPID: 0xCC 0x8E 190 | Router ID: 10.10.10.10 191 | IP Address: 10.10.10.10 192 | Hostname: AR10 193 | Metric: 10 IP 172.16.25.48 255.255.255.252 194 | Metric: 10 IP 172.16.25.64 255.255.255.252 195 | Metric: 10 IP 172.16.25.52 255.255.255.252 196 | Metric: 0 IP 10.10.10.10 255.255.255.255 197 | Metric: 10 IP 172.16.25.48/30 198 | Metric: 10 IP 172.16.25.64/30 199 | Metric: 10 IP 172.16.25.52/30 200 | Metric: 0 IP 10.10.10.10/32 201 | Metric: 10 IS DR2.02 202 | Metric: 10 IS DR1.02 203 | Metric: 10 IS-Extended DR2.02 204 | Metric: 10 IS-Extended DR1.02 205 | AR11.00-00 0x00000003 0x2DD5 926/1196 0/0/0 206 | Area Address: 49.0002 207 | Code: 14 Length: 2 208 | NLPID: 0xCC 0x8E 209 | Router ID: 10.10.10.11 210 | IP Address: 10.10.10.11 211 | Hostname: AR11 212 | Metric: 10 IP 172.16.25.56 255.255.255.252 213 | Metric: 10 IP 172.16.25.80 255.255.255.248 214 | Metric: 0 IP 10.10.10.11 255.255.255.255 215 | Metric: 10 IP 172.16.25.56/30 216 | Metric: 10 IP 172.16.25.80/29 217 | Metric: 0 IP 10.10.10.11/32 218 | Metric: 10 IS DR2.03 219 | Metric: 10 IS AR11.02 220 | Metric: 10 IS-Extended DR2.03 221 | Metric: 10 IS-Extended AR11.02 222 | AR11.02-00 0x00000001 0x739E 926/1196 0/0/0 223 | Metric: 0 IS AR11.00 224 | Metric: 0 IS AR9.00 225 | Metric: 0 IS-Extended AR11.00 226 | Metric: 0 IS-Extended AR9.00 227 | AR16.00-00 * 0x00000003 0x02BD 574/* 0/0/0 228 | Area Address: 49.0002 229 | NLPID: 0xCC 230 | Hostname: AR16 231 | Metric: 10 IS AR16.01 232 | IP Address: 10.10.10.16 233 | Metric: 0 IP 10.10.10.16 255.255.255.255 234 | Metric: 10 IP 172.16.25.72 255.255.255.252 235 | AR16.01-00 * 0x00000001 0x64C1 574/* 0/0/0 236 | Metric: 0 IS AR16.00 237 | Metric: 0 IS DR2.00 238 | DR1.00-00 0x00000006 0x66C1 954/1196 0/0/0 239 | Area Address: 49.0002 240 | Code: 14 Length: 2 241 | NLPID: 0xCC 0x8E 242 | Router ID: 10.10.10.253 243 | IP Address: 10.10.10.253 244 | Hostname: DR1 245 | Metric: 10 IP 172.16.25.4 255.255.255.252 246 | Metric: 10 IP 172.16.25.48 255.255.255.252 247 | Metric: 10 IP 172.16.25.0 255.255.255.252 248 | Metric: 10 IP 172.16.25.28 255.255.255.252 249 | Metric: 0 IP 10.10.10.253 255.255.255.255 250 | Metric: 10 IP 172.16.25.4/30 251 | Metric: 10 IP 172.16.25.48/30 252 | Metric: 10 IP 172.16.25.0/30 253 | Metric: 10 IP 172.16.25.28/30 254 | Metric: 0 IP 10.10.10.253/32 255 | Metric: 10 IS DR2.00 256 | Metric: 10 IS DR1.02 257 | Metric: 10 IS AR6.00 258 | Metric: 10 IS AR1.00 259 | Metric: 10 IS-Extended DR2.00 260 | Metric: 10 IS-Extended DR1.02 261 | Metric: 10 IS-Extended AR6.00 262 | Metric: 10 IS-Extended AR1.00 263 | DR1.02-00 0x00000003 0xFF35 773/1196 0/0/0 264 | Metric: 0 IS DR1.00 265 | Metric: 0 IS AR10.00 266 | Metric: 0 IS-Extended DR1.00 267 | Metric: 0 IS-Extended AR10.00 268 | DR2.00-00 0x00000007 0x6130 926/1198 0/0/0 269 | Area Address: 49.0002 270 | Code: 14 Length: 2 271 | NLPID: 0xCC 0x8E 272 | Router ID: 10.10.10.254 273 | IP Address: 10.10.10.254 274 | Hostname: DR2 275 | Metric: 10 IP 172.16.25.72 255.255.255.252 276 | Metric: 10 IP 172.16.25.80 255.255.255.248 277 | Metric: 10 IP 172.16.25.0 255.255.255.252 278 | Metric: 10 IP 172.16.25.44 255.255.255.252 279 | Metric: 10 IP 172.16.25.52 255.255.255.252 280 | Metric: 10 IP 172.16.25.24 255.255.255.252 281 | Metric: 0 IP 10.10.10.254 255.255.255.255 282 | Metric: 10 IP 172.16.25.72/30 283 | Metric: 10 IP 172.16.25.80/29 284 | Metric: 10 IP 172.16.25.0/30 285 | Metric: 10 IP 172.16.25.44/30 286 | Metric: 10 IP 172.16.25.52/30 287 | Metric: 10 IP 172.16.25.24/30 288 | Metric: 0 IP 10.10.10.254/32 289 | Metric: 10 IS DR1.00 290 | Metric: 10 IS AR16.01 291 | Metric: 10 IS DR2.02 292 | Metric: 10 IS DR2.03 293 | Metric: 10 IS AR5.00 294 | Metric: 10 IS AR9.00 295 | Metric: 10 IS-Extended DR1.00 296 | Metric: 10 IS-Extended AR16.01 297 | Metric: 10 IS-Extended DR2.02 298 | Metric: 10 IS-Extended DR2.03 299 | Metric: 10 IS-Extended AR5.00 300 | Metric: 10 IS-Extended AR9.00 301 | DR2.02-00 0x00000001 0x2C08 602/1198 0/0/0 302 | Metric: 0 IS DR2.00 303 | Metric: 0 IS AR10.00 304 | Metric: 0 IS-Extended DR2.00 305 | Metric: 0 IS-Extended AR10.00 306 | DR2.03-00 0x00000002 0x431F 895/1198 0/0/0 307 | Metric: 0 IS DR2.00 308 | Metric: 0 IS AR11.00 309 | Metric: 0 IS AR9.00 310 | Metric: 0 IS-Extended DR2.00 311 | Metric: 0 IS-Extended AR11.00 312 | Metric: 0 IS-Extended AR9.00 313 | ASW1.00-00 0x0000000B 0xD8E4 1058/1190 0/0/0 314 | Area Address: 49.0002 315 | Code: 14 Length: 2 316 | NLPID: 0xCC 0x8E 317 | Router ID: 10.10.20.1 318 | IP Address: 10.10.20.1 319 | Hostname: ASW1 320 | Metric: 10 IP 172.16.25.68 255.255.255.252 321 | Metric: 10 IP 172.16.25.60 255.255.255.252 322 | Metric: 0 IP 10.10.20.1 255.255.255.255 323 | Metric: 10 IP 172.16.25.68/30 324 | Metric: 10 IP 172.16.25.60/30 325 | Metric: 0 IP 10.10.20.1/32 326 | Metric: 10 IS ASW1.02 327 | Metric: 10 IS ASW1.03 328 | Metric: 10 IS-Extended ASW1.02 329 | Metric: 10 IS-Extended ASW1.03 330 | ASW1.02-00 0x00000001 0x2726 964/951 0/0/0 331 | Metric: 0 IS ASW1.00 332 | Metric: 0 IS AR2.00 333 | Metric: 0 IS-Extended ASW1.00 334 | Metric: 0 IS-Extended AR2.00 335 | ASW1.03-00 0x00000005 0x1830 1052/1190 0/0/0 336 | Metric: 0 IS ASW1.00 337 | Metric: 0 IS AR2.00 338 | Metric: 0 IS-Extended ASW1.00 339 | Metric: 0 IS-Extended AR2.00 340 | AR16# 341 | 342 | -------------------------------------------------------------------------------- /nextUI/app/topology_data.js: -------------------------------------------------------------------------------- 1 | var topologyData = {'nodes': [{'id': '10.0.10.165', 'name': '10.0.10.165', 'icon': 'router'}, {'id': '10.0.10.166', 'name': '10.0.10.166', 'icon': 'router'}, {'id': '10.0.10.167', 'name': '10.0.10.167', 'icon': 'router'}, {'id': '10.0.255.1', 'name': '10.0.255.1', 'icon': 'router'}, {'id': '10.0.255.2', 'name': '10.0.255.2', 'icon': 'router'}, {'id': '10.0.255.3', 'name': '10.0.255.3', 'icon': 'router'}, {'id': '10.0.255.4', 'name': '10.0.255.4', 'icon': 'router'}, {'id': '10.0.255.5', 'name': '10.0.255.5', 'icon': 'router'}, {'id': '10.0.255.6', 'name': '10.0.255.6', 'icon': 'router'}, {'id': '10.0.255.7', 'name': '10.0.255.7', 'icon': 'router'}, {'id': '10.0.255.9', 'name': '10.0.255.9', 'icon': 'router'}, {'id': '10.0.255.10', 'name': '10.0.255.10', 'icon': 'router'}, {'id': '10.0.255.11', 'name': '10.0.255.11', 'icon': 'router'}, {'id': '10.0.255.12', 'name': '10.0.255.12', 'icon': 'router'}, {'id': '10.0.255.13', 'name': '10.0.255.13', 'icon': 'router'}, {'id': '10.0.255.14', 'name': '10.0.255.14', 'icon': 'router'}, {'id': '10.0.255.15', 'name': '10.0.255.15', 'icon': 'router'}, {'id': '10.0.255.16', 'name': '10.0.255.16', 'icon': 'router'}, {'id': '10.0.255.17', 'name': '10.0.255.17', 'icon': 'router'}, {'id': '10.0.255.18', 'name': '10.0.255.18', 'icon': 'router'}, {'id': '10.0.255.19', 'name': '10.0.255.19', 'icon': 'router'}, {'id': '10.0.255.20', 'name': '10.0.255.20', 'icon': 'router'}, {'id': '10.0.255.21', 'name': '10.0.255.21', 'icon': 'router'}, {'id': '10.0.255.24', 'name': '10.0.255.24', 'icon': 'router'}, {'id': '10.0.255.25', 'name': '10.0.255.25', 'icon': 'router'}, {'id': '10.0.255.106', 'name': '10.0.255.106', 'icon': 'router'}, {'id': '10.0.255.107', 'name': '10.0.255.107', 'icon': 'router'}, {'id': '10.0.255.108', 'name': '10.0.255.108', 'icon': 'router'}, {'id': '10.0.255.109', 'name': '10.0.255.109', 'icon': 'router'}, {'id': '10.238.255.1', 'name': '10.238.255.1', 'icon': 'router'}, {'id': '77.82.0.1', 'name': '77.82.0.1', 'icon': 'router'}, {'id': '77.82.0.2', 'name': '77.82.0.2', 'icon': 'router'}, {'id': '77.82.0.30', 'name': '77.82.0.30', 'icon': 'router'}, {'id': '77.82.0.31', 'name': '77.82.0.31', 'icon': 'router'}, {'id': '77.82.0.192', 'name': '77.82.0.192', 'icon': 'router'}, {'id': '77.82.0.194', 'name': '77.82.0.194', 'icon': 'router'}, {'id': '77.82.0.203', 'name': '77.82.0.203', 'icon': 'router'}, {'id': '77.82.0.204', 'name': '77.82.0.204', 'icon': 'router'}, {'id': '77.82.0.205', 'name': '77.82.0.205', 'icon': 'router'}, {'id': '77.82.0.206', 'name': '77.82.0.206', 'icon': 'router'}, {'id': '77.82.0.207', 'name': '77.82.0.207', 'icon': 'router'}, {'id': '77.82.0.208', 'name': '77.82.0.208', 'icon': 'router'}, {'id': '77.82.0.209', 'name': '77.82.0.209', 'icon': 'router'}, {'id': '77.82.0.210', 'name': '77.82.0.210', 'icon': 'router'}, {'id': '85.28.192.1', 'name': '85.28.192.1', 'icon': 'router'}, {'id': '85.28.192.2', 'name': '85.28.192.2', 'icon': 'router'}, {'id': '85.28.192.3', 'name': '85.28.192.3', 'icon': 'router'}, {'id': '85.28.192.4', 'name': '85.28.192.4', 'icon': 'router'}, {'id': '85.28.192.5', 'name': '85.28.192.5', 'icon': 'router'}, {'id': '85.28.192.6', 'name': '85.28.192.6', 'icon': 'router'}, {'id': '85.28.192.7', 'name': '85.28.192.7', 'icon': 'router'}, {'id': '85.28.192.8', 'name': '85.28.192.8', 'icon': 'router'}, {'id': '85.28.192.9', 'name': '85.28.192.9', 'icon': 'router'}, {'id': '85.28.192.10', 'name': '85.28.192.10', 'icon': 'router'}, {'id': '85.28.192.11', 'name': '85.28.192.11', 'icon': 'router'}, {'id': '85.28.192.12', 'name': '85.28.192.12', 'icon': 'router'}, {'id': '85.28.192.13', 'name': '85.28.192.13', 'icon': 'router'}, {'id': '85.28.192.14', 'name': '85.28.192.14', 'icon': 'router'}, {'id': '85.28.192.16', 'name': '85.28.192.16', 'icon': 'router'}, {'id': '85.28.192.19', 'name': '85.28.192.19', 'icon': 'router'}, {'id': '85.28.192.20', 'name': '85.28.192.20', 'icon': 'router'}, {'id': '85.28.192.21', 'name': '85.28.192.21', 'icon': 'router'}, {'id': '85.28.192.23', 'name': '85.28.192.23', 'icon': 'router'}, {'id': '85.28.192.24', 'name': '85.28.192.24', 'icon': 'router'}, {'id': '85.28.192.25', 'name': '85.28.192.25', 'icon': 'router'}, {'id': '85.28.192.26', 'name': '85.28.192.26', 'icon': 'router'}, {'id': '85.28.192.27', 'name': '85.28.192.27', 'icon': 'router'}, {'id': '85.28.192.28', 'name': '85.28.192.28', 'icon': 'router'}, {'id': '85.28.192.30', 'name': '85.28.192.30', 'icon': 'router'}, {'id': '85.28.192.31', 'name': '85.28.192.31', 'icon': 'router'}, {'id': '85.28.192.64', 'name': '85.28.192.64', 'icon': 'router'}, {'id': '85.28.192.65', 'name': '85.28.192.65', 'icon': 'router'}, {'id': '85.28.192.68', 'name': '85.28.192.68', 'icon': 'router'}, {'id': '85.28.192.69', 'name': '85.28.192.69', 'icon': 'router'}, {'id': '85.28.192.70', 'name': '85.28.192.70', 'icon': 'router'}, {'id': '85.28.192.71', 'name': '85.28.192.71', 'icon': 'router'}, {'id': '85.28.192.72', 'name': '85.28.192.72', 'icon': 'router'}, {'id': '85.28.192.73', 'name': '85.28.192.73', 'icon': 'router'}, {'id': '85.28.192.74', 'name': '85.28.192.74', 'icon': 'router'}, {'id': '85.28.192.79', 'name': '85.28.192.79', 'icon': 'router'}, {'id': '85.28.194.136', 'name': '85.28.194.136', 'icon': 'router'}, {'id': '85.28.194.137', 'name': '85.28.194.137', 'icon': 'router'}, {'id': '85.28.194.138', 'name': '85.28.194.138', 'icon': 'router'}, {'id': '77.82.0.54', 'icon': 'bma'}, {'id': '77.82.0.82', 'icon': 'bma'}, {'id': '77.82.0.78', 'icon': 'bma'}, {'id': '85.28.192.97', 'icon': 'bma'}, {'id': '77.82.0.65', 'icon': 'bma'}, {'id': '77.82.0.69', 'icon': 'bma'}, {'id': '77.82.0.73', 'icon': 'bma'}, {'id': '77.82.0.85', 'icon': 'bma'}, {'id': '77.82.0.89', 'icon': 'bma'}, {'id': '85.28.192.54', 'icon': 'bma'}, {'id': '85.28.192.114', 'icon': 'bma'}], 'links': [{'id': 0, 'source': '10.0.10.165', 'target': '10.0.255.20', 'color': 'blue'}, {'id': 1, 'source': '10.0.10.166', 'target': '10.0.255.20', 'color': 'blue'}, {'id': 2, 'source': '10.0.10.166', 'target': '10.0.10.167', 'color': 'blue'}, {'id': 3, 'source': '10.0.10.167', 'target': '85.28.194.136', 'color': 'blue'}, {'id': 4, 'source': '10.0.255.1', 'target': '77.82.0.30', 'color': 'blue'}, {'id': 5, 'source': '10.0.255.1', 'target': '10.0.255.3', 'color': 'blue'}, {'id': 6, 'source': '10.0.255.2', 'target': '10.0.255.4', 'color': 'blue'}, {'id': 7, 'source': '10.0.255.2', 'target': '77.82.0.30', 'color': 'blue'}, {'id': 8, 'source': '10.0.255.3', 'target': '10.0.255.5', 'color': 'blue'}, {'id': 9, 'source': '10.0.255.4', 'target': '10.0.255.6', 'color': 'blue'}, {'id': 10, 'source': '10.0.255.5', 'target': '77.82.0.209', 'color': 'blue'}, {'id': 11, 'source': '10.0.255.5', 'target': '10.0.255.7', 'color': 'blue'}, {'id': 12, 'source': '10.0.255.6', 'target': '10.0.255.7', 'color': 'blue'}, {'id': 13, 'source': '10.0.255.9', 'target': '10.0.255.10', 'color': 'blue'}, {'id': 14, 'source': '10.0.255.9', 'target': '77.82.0.30', 'color': 'blue'}, {'id': 15, 'source': '10.0.255.10', 'target': '10.0.255.11', 'color': 'blue'}, {'id': 16, 'source': '10.0.255.11', 'target': '10.0.255.12', 'color': 'blue'}, {'id': 17, 'source': '10.0.255.12', 'target': '10.0.255.13', 'color': 'blue'}, {'id': 18, 'source': '10.0.255.13', 'target': '10.0.255.14', 'color': 'blue'}, {'id': 19, 'source': '10.0.255.14', 'target': '10.0.255.15', 'color': 'blue'}, {'id': 20, 'source': '10.0.255.15', 'target': '10.0.255.16', 'color': 'blue'}, {'id': 21, 'source': '10.0.255.16', 'target': '10.0.255.20', 'color': 'blue'}, {'id': 22, 'source': '10.0.255.17', 'target': '10.0.255.20', 'color': 'blue'}, {'id': 23, 'source': '10.0.255.17', 'target': '10.0.255.18', 'color': 'blue'}, {'id': 24, 'source': '10.0.255.18', 'target': '77.82.0.210', 'color': 'blue'}, {'id': 25, 'source': '10.0.255.18', 'target': '10.0.255.19', 'color': 'blue'}, {'id': 26, 'source': '10.0.255.19', 'target': '85.28.192.26', 'color': 'blue'}, {'id': 27, 'source': '10.0.255.20', 'target': '77.82.0.30', 'color': 'blue'}, {'id': 28, 'source': '10.0.255.21', 'target': '85.28.194.136', 'color': 'blue'}, {'id': 29, 'source': '10.0.255.21', 'target': '10.0.255.106', 'color': 'blue'}, {'id': 30, 'source': '10.0.255.21', 'target': '10.0.255.107', 'color': 'blue'}, {'id': 31, 'source': '10.0.255.24', 'target': '10.0.255.109', 'color': 'blue'}, {'id': 32, 'source': '10.0.255.24', 'target': '85.28.192.24', 'color': 'blue'}, {'id': 33, 'source': '10.0.255.24', 'target': '10.0.255.109', 'color': 'blue'}, {'id': 34, 'source': '10.0.255.25', 'target': '85.28.192.21', 'color': 'blue'}, {'id': 35, 'source': '10.0.255.25', 'target': '77.82.0.194', 'color': 'blue'}, {'id': 36, 'source': '10.0.255.25', 'target': '77.82.0.210', 'color': 'blue'}, {'id': 37, 'source': '10.0.255.25', 'target': '77.82.0.210', 'color': 'blue'}, {'id': 38, 'source': '10.0.255.108', 'target': '85.28.194.136', 'color': 'blue'}, {'id': 39, 'source': '10.0.255.109', 'target': '85.28.194.136', 'color': 'blue'}, {'id': 40, 'source': '10.238.255.1', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 41, 'source': '10.238.255.1', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 42, 'source': '77.82.0.1', 'target': '77.82.0.206', 'color': 'blue'}, {'id': 43, 'source': '77.82.0.1', 'target': '85.28.192.1', 'color': 'blue'}, {'id': 44, 'source': '77.82.0.2', 'target': '77.82.0.205', 'color': 'blue'}, {'id': 45, 'source': '77.82.0.30', 'target': '85.28.192.8', 'color': 'blue'}, {'id': 46, 'source': '77.82.0.30', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 47, 'source': '77.82.0.30', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 48, 'source': '77.82.0.31', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 49, 'source': '77.82.0.31', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 50, 'source': '77.82.0.31', 'target': '77.82.0.205', 'color': 'blue'}, {'id': 51, 'source': '77.82.0.203', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 52, 'source': '77.82.0.203', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 53, 'source': '77.82.0.203', 'target': '77.82.0.206', 'color': 'blue'}, {'id': 54, 'source': '77.82.0.204', 'target': '85.28.192.69', 'color': 'blue'}, {'id': 55, 'source': '77.82.0.204', 'target': '77.82.0.207', 'color': 'blue'}, {'id': 56, 'source': '77.82.0.204', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 57, 'source': '77.82.0.204', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 58, 'source': '77.82.0.204', 'target': '77.82.0.206', 'color': 'blue'}, {'id': 59, 'source': '77.82.0.205', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 60, 'source': '77.82.0.205', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 61, 'source': '77.82.0.206', 'target': '85.28.192.71', 'color': 'blue'}, {'id': 62, 'source': '77.82.0.206', 'target': '85.28.192.68', 'color': 'blue'}, {'id': 63, 'source': '77.82.0.206', 'target': '85.28.192.16', 'color': 'blue'}, {'id': 64, 'source': '77.82.0.206', 'target': '85.28.192.13', 'color': 'blue'}, {'id': 65, 'source': '77.82.0.206', 'target': '85.28.192.16', 'color': 'blue'}, {'id': 66, 'source': '77.82.0.206', 'target': '77.82.0.207', 'color': 'blue'}, {'id': 67, 'source': '77.82.0.206', 'target': '85.28.192.14', 'color': 'blue'}, {'id': 68, 'source': '77.82.0.206', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 69, 'source': '77.82.0.206', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 70, 'source': '77.82.0.206', 'target': '85.28.192.19', 'color': 'blue'}, {'id': 71, 'source': '77.82.0.206', 'target': '85.28.192.64', 'color': 'blue'}, {'id': 72, 'source': '77.82.0.207', 'target': '85.28.192.65', 'color': 'blue'}, {'id': 73, 'source': '77.82.0.207', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 74, 'source': '77.82.0.207', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 75, 'source': '77.82.0.208', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 76, 'source': '77.82.0.208', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 77, 'source': '77.82.0.209', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 78, 'source': '77.82.0.209', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 79, 'source': '77.82.0.209', 'target': '85.28.192.9', 'color': 'blue'}, {'id': 80, 'source': '77.82.0.210', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 81, 'source': '85.28.192.10', 'target': '85.28.194.136', 'color': 'blue'}, {'id': 82, 'source': '85.28.192.11', 'target': '85.28.192.14', 'color': 'blue'}, {'id': 83, 'source': '85.28.192.12', 'target': '85.28.192.14', 'color': 'blue'}, {'id': 84, 'source': '85.28.192.12', 'target': '85.28.192.14', 'color': 'blue'}, {'id': 85, 'source': '85.28.192.14', 'target': '85.28.192.25', 'color': 'blue'}, {'id': 86, 'source': '85.28.192.14', 'target': '85.28.192.27', 'color': 'blue'}, {'id': 87, 'source': '85.28.192.14', 'target': '85.28.192.28', 'color': 'blue'}, {'id': 88, 'source': '85.28.192.14', 'target': '85.28.192.20', 'color': 'blue'}, {'id': 89, 'source': '85.28.192.14', 'target': '85.28.192.23', 'color': 'blue'}, {'id': 90, 'source': '85.28.192.14', 'target': '85.28.192.73', 'color': 'blue'}, {'id': 91, 'source': '85.28.192.14', 'target': '85.28.192.28', 'color': 'blue'}, {'id': 92, 'source': '85.28.192.14', 'target': '85.28.192.27', 'color': 'blue'}, {'id': 93, 'source': '85.28.192.14', 'target': '85.28.192.26', 'color': 'blue'}, {'id': 94, 'source': '85.28.192.14', 'target': '85.28.192.25', 'color': 'blue'}, {'id': 95, 'source': '85.28.192.14', 'target': '85.28.192.26', 'color': 'blue'}, {'id': 96, 'source': '85.28.192.14', 'target': '85.28.192.72', 'color': 'blue'}, {'id': 97, 'source': '85.28.192.14', 'target': '85.28.192.23', 'color': 'blue'}, {'id': 98, 'source': '85.28.192.14', 'target': '85.28.192.20', 'color': 'blue'}, {'id': 99, 'source': '85.28.192.70', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 100, 'source': '85.28.192.74', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 101, 'source': '85.28.192.74', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 102, 'source': '85.28.194.136', 'target': '85.28.194.137', 'color': 'blue'}, {'id': 103, 'source': '85.28.194.137', 'target': '85.28.194.138', 'color': 'blue'}, {'id': 104, 'source': '77.82.0.1', 'target': '77.82.0.89', 'color': 'blue'}, {'id': 105, 'source': '77.82.0.1', 'target': '77.82.0.54', 'color': 'blue'}, {'id': 106, 'source': '77.82.0.2', 'target': '77.82.0.54', 'color': 'blue'}, {'id': 107, 'source': '77.82.0.31', 'target': '77.82.0.82', 'color': 'blue'}, {'id': 108, 'source': '77.82.0.192', 'target': '85.28.192.97', 'color': 'blue'}, {'id': 109, 'source': '77.82.0.203', 'target': '77.82.0.65', 'color': 'blue'}, {'id': 110, 'source': '77.82.0.204', 'target': '77.82.0.78', 'color': 'blue'}, {'id': 111, 'source': '77.82.0.205', 'target': '85.28.192.97', 'color': 'blue'}, {'id': 112, 'source': '77.82.0.205', 'target': '77.82.0.85', 'color': 'blue'}, {'id': 113, 'source': '77.82.0.206', 'target': '85.28.192.54', 'color': 'blue'}, {'id': 114, 'source': '77.82.0.207', 'target': '77.82.0.69', 'color': 'blue'}, {'id': 115, 'source': '77.82.0.208', 'target': '77.82.0.73', 'color': 'blue'}, {'id': 116, 'source': '85.28.192.1', 'target': '85.28.192.114', 'color': 'blue'}, {'id': 117, 'source': '85.28.192.2', 'target': '77.82.0.65', 'color': 'blue'}, {'id': 118, 'source': '85.28.192.3', 'target': '77.82.0.69', 'color': 'blue'}, {'id': 119, 'source': '85.28.192.4', 'target': '77.82.0.73', 'color': 'blue'}, {'id': 120, 'source': '85.28.192.5', 'target': '77.82.0.78', 'color': 'blue'}, {'id': 121, 'source': '85.28.192.6', 'target': '77.82.0.82', 'color': 'blue'}, {'id': 122, 'source': '85.28.192.7', 'target': '77.82.0.85', 'color': 'blue'}, {'id': 123, 'source': '85.28.192.30', 'target': '77.82.0.89', 'color': 'blue'}, {'id': 124, 'source': '85.28.192.31', 'target': '85.28.192.54', 'color': 'blue'}, {'id': 125, 'source': '85.28.192.79', 'target': '85.28.192.114', 'color': 'blue'}]} -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/assets/vendor/prettify/prettify-min.js: -------------------------------------------------------------------------------- 1 | window.PR_SHOULD_USE_CONTINUATION=true;var prettyPrintOne;var prettyPrint;(function(){var O=window;var j=["break,continue,do,else,for,if,return,while"];var v=[j,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var q=[v,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var m=[q,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var y=[q,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var T=[y,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"];var s="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes";var x=[q,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var t="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var J=[j,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var g=[j,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var I=[j,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var B=[m,T,x,t+J,g,I];var f=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/;var D="str";var A="kwd";var k="com";var Q="typ";var H="lit";var M="pun";var G="pln";var n="tag";var F="dec";var K="src";var R="atn";var o="atv";var P="nocode";var N="(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function l(ab){var af=0;var U=false;var ae=false;for(var X=0,W=ab.length;X122)){if(!(am<65||ai>90)){ah.push([Math.max(65,ai)|32,Math.min(am,90)|32])}if(!(am<97||ai>122)){ah.push([Math.max(97,ai)&~32,Math.min(am,122)&~32])}}}}ah.sort(function(aw,av){return(aw[0]-av[0])||(av[1]-aw[1])});var ak=[];var aq=[];for(var at=0;atau[0]){if(au[1]+1>au[0]){ao.push("-")}ao.push(V(au[1]))}}ao.push("]");return ao.join("")}function Y(an){var al=an.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var aj=al.length;var ap=[];for(var am=0,ao=0;am=2&&ak==="["){al[am]=Z(ai)}else{if(ak!=="\\"){al[am]=ai.replace(/[a-zA-Z]/g,function(aq){var ar=aq.charCodeAt(0);return"["+String.fromCharCode(ar&~32,ar|32)+"]"})}}}}return al.join("")}var ac=[];for(var X=0,W=ab.length;X=0;){U[ae.charAt(ag)]=aa}}var ah=aa[1];var ac=""+ah;if(!ai.hasOwnProperty(ac)){aj.push(ah);ai[ac]=null}}aj.push(/[\0-\uffff]/);X=l(aj)})();var Z=V.length;var Y=function(aj){var ab=aj.sourceCode,aa=aj.basePos;var af=[aa,G];var ah=0;var ap=ab.match(X)||[];var al={};for(var ag=0,at=ap.length;ag=5&&"lang-"===ar.substring(0,5);if(ao&&!(ak&&typeof ak[1]==="string")){ao=false;ar=K}if(!ao){al[ai]=ar}}var ad=ah;ah+=ai.length;if(!ao){af.push(aa+ad,ar)}else{var an=ak[1];var am=ai.indexOf(an);var ae=am+an.length;if(ak[2]){ae=ai.length-ak[2].length;am=ae-an.length}var au=ar.substring(5);C(aa+ad,ai.substring(0,am),Y,af);C(aa+ad+am,an,r(au,an),af);C(aa+ad+ae,ai.substring(ae),Y,af)}}aj.decorations=af};return Y}function i(V){var Y=[],U=[];if(V.tripleQuotedStrings){Y.push([D,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(V.multiLineStrings){Y.push([D,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{Y.push([D,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(V.verbatimStrings){U.push([D,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var ab=V.hashComments;if(ab){if(V.cStyleComments){if(ab>1){Y.push([k,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{Y.push([k,/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}U.push([D,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,null])}else{Y.push([k,/^#[^\r\n]*/,null,"#"])}}if(V.cStyleComments){U.push([k,/^\/\/[^\r\n]*/,null]);U.push([k,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(V.regexLiterals){var aa=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");U.push(["lang-regex",new RegExp("^"+N+"("+aa+")")])}var X=V.types;if(X){U.push([Q,X])}var W=(""+V.keywords).replace(/^ | $/g,"");if(W.length){U.push([A,new RegExp("^(?:"+W.replace(/[\s,]+/g,"|")+")\\b"),null])}Y.push([G,/^\s+/,null," \r\n\t\xA0"]);var Z=/^.[^\s\w\.$@\'\"\`\/\\]*/;U.push([H,/^@[a-z_$][a-z_$@0-9]*/i,null],[Q,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[G,/^[a-z_$][a-z_$@0-9]*/i,null],[H,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[G,/^\\[\s\S]?/,null],[M,Z,null]);return h(Y,U)}var L=i({keywords:B,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function S(W,ah,aa){var V=/(?:^|\s)nocode(?:\s|$)/;var ac=/\r\n?|\n/;var ad=W.ownerDocument;var ag=ad.createElement("li");while(W.firstChild){ag.appendChild(W.firstChild)}var X=[ag];function af(am){switch(am.nodeType){case 1:if(V.test(am.className)){break}if("br"===am.nodeName){ae(am);if(am.parentNode){am.parentNode.removeChild(am)}}else{for(var ao=am.firstChild;ao;ao=ao.nextSibling){af(ao)}}break;case 3:case 4:if(aa){var an=am.nodeValue;var ak=an.match(ac);if(ak){var aj=an.substring(0,ak.index);am.nodeValue=aj;var ai=an.substring(ak.index+ak[0].length);if(ai){var al=am.parentNode;al.insertBefore(ad.createTextNode(ai),am.nextSibling)}ae(am);if(!aj){am.parentNode.removeChild(am)}}}break}}function ae(al){while(!al.nextSibling){al=al.parentNode;if(!al){return}}function aj(am,at){var ar=at?am.cloneNode(false):am;var ap=am.parentNode;if(ap){var aq=aj(ap,1);var ao=am.nextSibling;aq.appendChild(ar);for(var an=ao;an;an=ao){ao=an.nextSibling;aq.appendChild(an)}}return ar}var ai=aj(al.nextSibling,0);for(var ak;(ak=ai.parentNode)&&ak.nodeType===1;){ai=ak}X.push(ai)}for(var Z=0;Z=U){aj+=2}if(Y>=ar){ac+=2}}}finally{if(au){au.style.display=ak}}}var u={};function d(W,X){for(var U=X.length;--U>=0;){var V=X[U];if(!u.hasOwnProperty(V)){u[V]=W}else{if(O.console){console.warn("cannot override language handler %s",V)}}}}function r(V,U){if(!(V&&u.hasOwnProperty(V))){V=/^\s*]*(?:>|$)/],[k,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[M,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);d(h([[G,/^[\s]+/,null," \t\r\n"],[o,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[n,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[R,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[M,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);d(h([],[[o,/^[\s\S]+/]]),["uq.val"]);d(i({keywords:m,hashComments:true,cStyleComments:true,types:f}),["c","cc","cpp","cxx","cyc","m"]);d(i({keywords:"null,true,false"}),["json"]);d(i({keywords:T,hashComments:true,cStyleComments:true,verbatimStrings:true,types:f}),["cs"]);d(i({keywords:y,cStyleComments:true}),["java"]);d(i({keywords:I,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);d(i({keywords:J,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);d(i({keywords:t,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);d(i({keywords:g,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);d(i({keywords:x,cStyleComments:true,regexLiterals:true}),["js"]);d(i({keywords:s,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);d(h([],[[D,/^[\s\S]+/]]),["regex"]);function e(X){var W=X.langExtension;try{var U=b(X.sourceNode,X.pre);var V=U.sourceCode;X.sourceCode=V;X.spans=U.spans;X.basePos=0;r(W,V)(X);E(X)}catch(Y){if(O.console){console.log(Y&&Y.stack?Y.stack:Y)}}}function z(Y,X,W){var U=document.createElement("pre");U.innerHTML=Y;if(W){S(U,W,true)}var V={langExtension:X,numberLines:W,sourceNode:U,pre:1};e(V);return U.innerHTML}function c(aj){function ab(al){return document.getElementsByTagName(al)}var ah=[ab("pre"),ab("code"),ab("xmp")];var V=[];for(var ae=0;ae]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Next UI Toolkit 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 |
    16 |
    17 | 18 |

    19 | 20 |
    21 |
    22 | API Docs for: 1.0.0 23 |
    24 |
    25 |
    26 | 27 |
    28 | 270 |
    271 |
    272 |
    273 | Show: 274 | 278 | 279 | 283 | 284 | 288 | 292 | 293 |
    294 | 295 | 296 |
    297 |
    298 |
    299 |
    300 |
    301 |

    302 | Browse to a module or class using the sidebar to view its API documentation. 303 |

    304 | 305 |

    Keyboard Shortcuts

    306 | 307 |
      308 |
    • Press s to focus the API search box.

    • 309 | 310 |
    • Use Up and Down to select classes, modules, and search results.

    • 311 | 312 |
    • With the API search box or sidebar focused, use -Left or -Right to switch sidebar tabs.

    • 313 | 314 |
    • With the API search box or sidebar focused, use Ctrl+Left and Ctrl+Right to switch sidebar tabs.

    • 315 |
    316 |
    317 |
    318 | 319 | 320 | 321 |
    322 |
    323 |
    324 |
    325 |
    326 |
    327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/classes/nx.geometry.Math.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | nx.geometry.Math - Next UI Toolkit 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 |
    16 |
    17 | 18 |

    19 | 20 |
    21 |
    22 | API Docs for: 1.0.0 23 |
    24 |
    25 |
    26 | 27 |
    28 | 270 |
    271 |
    272 |
    273 | Show: 274 | 278 | 279 | 283 | 284 | 288 | 292 | 293 |
    294 | 295 | 296 |
    297 |
    298 |
    299 |

    nx.geometry.Math Class

    300 |
    301 | 302 | 303 | 304 | 305 | 306 |
    307 | Defined in: target/next/js/next.js:11129 308 |
    309 | 310 | 311 | 312 | 313 | Module: nx.graphic 314 | 315 | 316 | 317 | 318 |
    319 | 320 | 321 | 322 |
    323 | 324 |
    325 | 326 | 327 | 328 |
    329 |
      330 |
    • Index
    • 331 | 332 | 333 | 334 | 335 | 336 |
    337 | 338 |
    339 |
    340 |

    Item Index

    341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 |
    350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 |
    359 |
    360 | 361 |
    362 |
    363 |
    364 |
    365 |
    366 |
    367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | -------------------------------------------------------------------------------- /nextUI/bower_components/next-bower/doc/classes/nx.geometry.Matrix.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | nx.geometry.Matrix - Next UI Toolkit 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 |
    16 |
    17 | 18 |

    19 | 20 |
    21 |
    22 | API Docs for: 1.0.0 23 |
    24 |
    25 |
    26 | 27 |
    28 | 270 |
    271 |
    272 |
    273 | Show: 274 | 278 | 279 | 283 | 284 | 288 | 292 | 293 |
    294 | 295 | 296 |
    297 |
    298 |
    299 |

    nx.geometry.Matrix Class

    300 |
    301 | 302 | 303 | 304 | 305 | 306 |
    307 | Defined in: target/next/js/next.js:11016 308 |
    309 | 310 | 311 | 312 | 313 | Module: nx.graphic 314 | 315 | 316 | 317 | 318 |
    319 | 320 | 321 | 322 |
    323 | 324 |
    325 | 326 | 327 | 328 |
    329 |
      330 |
    • Index
    • 331 | 332 | 333 | 334 | 335 | 336 |
    337 | 338 |
    339 |
    340 |

    Item Index

    341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 |
    350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 |
    359 |
    360 | 361 |
    362 |
    363 |
    364 |
    365 |
    366 |
    367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | --------------------------------------------------------------------------------