1 !<arch> 2 __.PKGDEF 0 0 0 644 4412 ` 3 go object linux amd64 go1.5.1 X:none 4 build id "bf6b27d75e1b02ae61a3e185853d1e276913673a" 5 6 $$ 7 package svg 8 import runtime "runtime" 9 import bytes "bytes" 10 import regexp "regexp" 11 import strings "strings" 12 type @"bytes".readOp int 13 import io "io" // indirect 14 type @"io".Reader interface { Read(@"io".p []byte) (@"io".n int, @"io".err error) } 15 type @"io".Writer interface { Write(@"io".p []byte) (@"io".n int, @"io".err error) } 16 type @"bytes".Buffer struct { @"bytes".buf []byte; @"bytes".off int; @"bytes".runeBytes [4]byte; @"bytes".bootstrap [64]byte; @"bytes".lastRead @"bytes".readOp } 17 func (@"bytes".b2 *@"bytes".Buffer "esc:0x22") Bytes () (? []byte) { return @"bytes".b2.@"bytes".buf[@"bytes".b2.@"bytes".off:] } 18 func (@"bytes".b2 *@"bytes".Buffer "esc:0x1") Cap () (? int) { return cap(@"bytes".b2.@"bytes".buf) } 19 func (@"bytes".b1 *@"bytes".Buffer) Grow (@"bytes".n2 int) 20 func (@"bytes".b2 *@"bytes".Buffer "esc:0x1") Len () (? int) { return len(@"bytes".b2.@"bytes".buf) - @"bytes".b2.@"bytes".off } 21 func (@"bytes".b2 *@"bytes".Buffer "esc:0x22") Next (@"bytes".n3 int) (? []byte) { @"bytes".b2.@"bytes".lastRead = @"bytes".readOp(0x0); var @"bytes".m4 int; ; @"bytes".m4 = @"bytes".b2.Len(); if @"bytes".n3 > @"bytes".m4 { @"bytes".n3 = @"bytes".m4 }; var @"bytes".data5 []byte; ; @"bytes".data5 = @"bytes".b2.@"bytes".buf[@"bytes".b2.@"bytes".off:@"bytes".b2.@"bytes".off + @"bytes".n3]; @"bytes".b2.@"bytes".off += @"bytes".n3; if @"bytes".n3 > 0x0 { @"bytes".b2.@"bytes".lastRead = @"bytes".readOp(0x2) }; return @"bytes".data5 } 22 func (@"bytes".b3 *@"bytes".Buffer "esc:0x9") Read (@"bytes".p4 []byte "esc:0x1") (@"bytes".n1 int, @"bytes".err2 error) 23 func (@"bytes".b3 *@"bytes".Buffer "esc:0x1") ReadByte () (@"bytes".c1 byte, @"bytes".err2 error) 24 func (@"bytes".b3 *@"bytes".Buffer "esc:0x9") ReadBytes (@"bytes".delim4 byte) (@"bytes".line1 []byte, @"bytes".err2 error) 25 func (@"bytes".b3 *@"bytes".Buffer "esc:0x9") ReadFrom (@"bytes".r4 @"io".Reader) (@"bytes".n1 int64, @"bytes".err2 error) 26 func (@"bytes".b4 *@"bytes".Buffer "esc:0x1") ReadRune () (@"bytes".r1 rune, @"bytes".size2 int, @"bytes".err3 error) 27 func (@"bytes".b3 *@"bytes".Buffer "esc:0x1") ReadString (@"bytes".delim4 byte) (@"bytes".line1 string, @"bytes".err2 error) 28 func (@"bytes".b1 *@"bytes".Buffer "esc:0x1") Reset () 29 func (@"bytes".b2 *@"bytes".Buffer "esc:0x1") String () (? string) { if @"bytes".b2 == nil { return "<nil>" }; return string(@"bytes".b2.@"bytes".buf[@"bytes".b2.@"bytes".off:]) } 30 func (@"bytes".b1 *@"bytes".Buffer "esc:0x1") Truncate (@"bytes".n2 int) 31 func (@"bytes".b2 *@"bytes".Buffer "esc:0x1") UnreadByte () (? error) { if @"bytes".b2.@"bytes".lastRead != @"bytes".readOp(0x1) && @"bytes".b2.@"bytes".lastRead != @"bytes".readOp(0x2) { return @"errors".New("bytes.Buffer: UnreadByte: previous operation was not a read") }; @"bytes".b2.@"bytes".lastRead = @"bytes".readOp(0x0); if @"bytes".b2.@"bytes".off > 0x0 { @"bytes".b2.@"bytes".off-- }; return nil } 32 func (@"bytes".b2 *@"bytes".Buffer "esc:0x1") UnreadRune () (? error) 33 func (@"bytes".b3 *@"bytes".Buffer) Write (@"bytes".p4 []byte "esc:0x9") (@"bytes".n1 int, @"bytes".err2 error) 34 func (@"bytes".b2 *@"bytes".Buffer) WriteByte (@"bytes".c3 byte) (? error) 35 func (@"bytes".b3 *@"bytes".Buffer) WriteRune (@"bytes".r4 rune) (@"bytes".n1 int, @"bytes".err2 error) 36 func (@"bytes".b3 *@"bytes".Buffer) WriteString (@"bytes".s4 string "esc:0x9") (@"bytes".n1 int, @"bytes".err2 error) 37 func (@"bytes".b3 *@"bytes".Buffer "esc:0x9") WriteTo (@"bytes".w4 @"io".Writer) (@"bytes".n1 int64, @"bytes".err2 error) 38 func (@"bytes".b2 *@"bytes".Buffer) @"bytes".grow (@"bytes".n3 int) (? int) 39 func (@"bytes".b3 *@"bytes".Buffer "esc:0x22") @"bytes".readSlice (@"bytes".delim4 byte) (@"bytes".line1 []byte, @"bytes".err2 error) 40 func @"".Massage (@"".in2 @"bytes".Buffer "esc:0x1") (? string) 41 func @"".init () 42 import errors "errors" // indirect 43 func @"errors".New (@"errors".text2 string) (? error) { return (&@"errors".errorString{ @"errors".s:@"errors".text2 }) } 44 type @"errors".errorString struct { @"errors".s string } 45 func (@"errors".e2 *@"errors".errorString "esc:0x22") Error () (? string) { return @"errors".e2.@"errors".s } 46 47 $$ 48 _go_.o 0 0 0 644 15347 ` 49 go object linux amd64 go1.5.1 X:none 50 51 ! 52 go13ldbytes.aregexp.astrings.a"".MassagedH%HD$H;A9H1H$PH$XH$1HhL@LHL9LI)I)ItM*H$LT$xLT$L$LD$L$LL$HL$ HD$(HL$HH$HD$PHD$HH\$HD$HH\$ HD$(HD$0HL$8HD$@HH$HL$HHL$HD$PHD$Ht$HHT$PHD$HL$ H$H\$(H$H$HHHH9IHHHHHHH9H)IHtMH$H|$hH|$LL$pLL$HH\$HD$ LD$XLD$(Hl$`Hl$0Ht$8HT$@HH$Ht$HHt$HT$PHT$Ht$HHT$PHD$HL$ H$H\$(H$H$HHHH9IHHHHH9H)IHtMH$H|$hH|$LL$pLL$HH\$HD$ LD$XLD$(Hl$`Hl$0Ht$8HT$@HH$Ht$HHt$HT$PHT$HT$HHL$PHD$Ht$ H\$(H$HHHH9IHH$HH$HHH9w|H)IHtMH$H|$hH|$LL$pLL$HH\$HD$ LD$XLD$(Hl$`Hl$0HT$8HL$@H$PH$XH> 68 69 2runtime.slicebytetostringgo.string."&;"$go.string."&;" 70 strings.Replace"".viewBox 71 @regexp.(*Regexp).FindStringIndex^go.string."<svg width=\"100%\" height=\"100%\"" 72 *runtime.concatstring3"".graphId 73 @regexp.(*Regexp).FindStringIndex 74 ""..gostring.1 76 *runtime.concatstring3"".svgClose 79 @regexp.(*Regexp).FindStringIndex go.string."</g>" 80 *runtime.concatstring3 81 $runtime.panicslice 82 $runtime.panicindex 83 $runtime.panicslice 84 $runtime.panicindex 85 $runtime.panicslice 86 $runtime.panicindex 87 $runtime.panicslice 88 $runtime.panicindex 89 $runtime.panicslice 90 $runtime.panicindex 91 $runtime.panicslice 92 $runtime.panicindex 93 $runtime.panicslice 94 0runtime.morestack_noctxt$"".autotmp_0013type.string"".autotmp_0012type.int"".autotmp_0011type.string"".autotmp_0010type.int"".autotmp_0009type.string"".autotmp_0008type.int"".autotmp_0007type.string"".autotmp_0006type.int"".autotmp_0005type.string"".autotmp_0003type.string"".autotmp_0002type.int"".~r0type.[]uint8"".loc/type.[]int"".loctype.[]int"".loc_type.[]int"".svgtype.string"".~r1type.string 101 "".in"type.bytes.BufferjZ01mU.__}O7...Tgclocals7a323ca1c15880f1d654eb691e6746a0Tgclocals5ba12c3ef7a52494f3303a6bf7fd24c7pprebuilts/go/linux-x86/src/cmd/pprof/internal/svg/svg.go"".initdH%H;a HtuHHH$HD$7H\$=HHH$HD$H\$=uXHHH$HD$H\$=uHHH-H,$H\$H-H,$H\$H-H,$H\$P8 104 4"".initdoneL"".initdonej 105 "runtime.throwinitz"".initdone 106 bytes.init 107 regexp.init 108 strings.initgo.string."<svg\\s*width=\"[^\"]+\"\\s*height=\"[^\"]+\"\\s*viewBox=\"[^\"]+\"" 109 $regexp.MustCompile6runtime.writeBarrierEnabled"".viewBox<go.string."<g id=\"graph\\d\"" 110 $regexp.MustCompile6runtime.writeBarrierEnabled"".graphId$go.string."</svg>" 111 $regexp.MustCompile6runtime.writeBarrierEnabled"".svgClose"".initdone"".svgClose 112 .runtime.writebarrierptr"".graphId 113 .runtime.writebarrierptr"".viewBox 114 .runtime.writebarrierptr 115 0runtime.morestack_noctxt00/0/0U Q1 2vQU2..RQRST 4Tgclocals33cdeccccebe80329f1fdbee7f5874cbTgclocals33cdeccccebe80329f1fdbee7f5874cbvprebuilts/go/linux-x86/src/cmd/pprof/internal/svg/svgpan.gopprebuilts/go/linux-x86/src/cmd/pprof/internal/svg/svg.go$go.string.hdr."&;" go.string."&;"go.string."&;"&;,go.string.hdr."&;" $go.string."&;"$go.string."&;"&;fgo.string.hdr."<svg width=\"100%\" height=\"100%\"" ^go.string."<svg width=\"100%\" height=\"100%\""^go.string."<svg width=\"100%\" height=\"100%\""@@<svg width="100%" height="100%"$"".hdr..gostring.1 ""..gostring.1""..gostring.1ww<script type="text/ecmascript"><![CDATA[ 121 /** 122 * SVGPan library 1.2.1 123 * ====================== 124 * 125 * Given an unique existing element with id "viewport" (or when missing, the first g 126 * element), including the the library into any SVG adds the following capabilities: 127 * 128 * - Mouse panning 129 * - Mouse zooming (using the wheel) 130 * - Object dragging 131 * 132 * You can configure the behaviour of the pan/zoom/drag with the variables 133 * listed in the CONFIGURATION section of this file. 134 * 135 * Known issues: 136 * 137 * - Zooming (while panning) on Safari has still some issues 138 * 139 * Releases: 140 * 141 * 1.2.1, Mon Jul 4 00:33:18 CEST 2011, Andrea Leofreddi 142 * - Fixed a regression with mouse wheel (now working on Firefox 5) 143 * - Working with viewBox attribute (#4) 144 * - Added "use strict;" and fixed resulting warnings (#5) 145 * - Added configuration variables, dragging is disabled by default (#3) 146 * 147 * 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui 148 * Fixed a bug with browser mouse handler interaction 149 * 150 * 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui 151 * Updated the zoom code to support the mouse wheel on Safari/Chrome 152 * 153 * 1.0, Andrea Leofreddi 154 * First release 155 * 156 * This code is licensed under the following BSD license: 157 * 158 * Copyright 2009-2010 Andrea Leofreddi <a.leofreddi (a] itcharm.com>. All rights reserved. 159 * 160 * Redistribution and use in source and binary forms, with or without modification, are 161 * permitted provided that the following conditions are met: 162 * 163 * 1. Redistributions of source code must retain the above copyright notice, this list of 164 * conditions and the following disclaimer. 165 * 166 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 167 * of conditions and the following disclaimer in the documentation and/or other materials 168 * provided with the distribution. 169 * 170 * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED 171 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 172 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR 173 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 174 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 175 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 176 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 177 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 178 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 179 * 180 * The views and conclusions contained in the software and documentation are those of the 181 * authors and should not be interpreted as representing official policies, either expressed 182 * or implied, of Andrea Leofreddi. 183 */ 184 185 "use strict"; 186 187 /// CONFIGURATION 188 /// ====> 189 190 var enablePan = 1; // 1 or 0: enable or disable panning (default enabled) 191 var enableZoom = 1; // 1 or 0: enable or disable zooming (default enabled) 192 var enableDrag = 0; // 1 or 0: enable or disable dragging (default disabled) 193 194 /// <==== 195 /// END OF CONFIGURATION 196 197 var root = document.documentElement; 198 199 var state = 'none', svgRoot, stateTarget, stateOrigin, stateTf; 200 201 setupHandlers(root); 202 203 /** 204 * Register handlers 205 */ 206 function setupHandlers(root){ 207 setAttributes(root, { 208 "onmouseup" : "handleMouseUp(evt)", 209 "onmousedown" : "handleMouseDown(evt)", 210 "onmousemove" : "handleMouseMove(evt)", 211 //"onmouseout" : "handleMouseUp(evt)", // Decomment this to stop the pan functionality when dragging out of the SVG element 212 }); 213 214 if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0) 215 window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari 216 else 217 window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others 218 } 219 220 /** 221 * Retrieves the root element for SVG manipulation. The element is then cached into the svgRoot global variable. 222 */ 223 function getRoot(root) { 224 if(typeof(svgRoot) == "undefined") { 225 var g = null; 226 227 g = root.getElementById("viewport"); 228 229 if(g == null) 230 g = root.getElementsByTagName('g')[0]; 231 232 if(g == null) 233 alert('Unable to obtain SVG root element'); 234 235 setCTM(g, g.getCTM()); 236 237 g.removeAttribute("viewBox"); 238 239 svgRoot = g; 240 } 241 242 return svgRoot; 243 } 244 245 /** 246 * Instance an SVGPoint object with given event coordinates. 247 */ 248 function getEventPoint(evt) { 249 var p = root.createSVGPoint(); 250 251 p.x = evt.clientX; 252 p.y = evt.clientY; 253 254 return p; 255 } 256 257 /** 258 * Sets the current transform matrix of an element. 259 */ 260 function setCTM(element, matrix) { 261 var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; 262 263 element.setAttribute("transform", s); 264 } 265 266 /** 267 * Dumps a matrix to a string (useful for debug). 268 */ 269 function dumpMatrix(matrix) { 270 var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]"; 271 272 return s; 273 } 274 275 /** 276 * Sets attributes of an element. 277 */ 278 function setAttributes(element, attributes){ 279 for (var i in attributes) 280 element.setAttributeNS(null, i, attributes[i]); 281 } 282 283 /** 284 * Handle mouse wheel event. 285 */ 286 function handleMouseWheel(evt) { 287 if(!enableZoom) 288 return; 289 290 if(evt.preventDefault) 291 evt.preventDefault(); 292 293 evt.returnValue = false; 294 295 var svgDoc = evt.target.ownerDocument; 296 297 var delta; 298 299 if(evt.wheelDelta) 300 delta = evt.wheelDelta / 3600; // Chrome/Safari 301 else 302 delta = evt.detail / -90; // Mozilla 303 304 var z = 1 + delta; // Zoom factor: 0.9/1.1 305 306 var g = getRoot(svgDoc); 307 308 var p = getEventPoint(evt); 309 310 p = p.matrixTransform(g.getCTM().inverse()); 311 312 // Compute new scale matrix in current mouse position 313 var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y); 314 315 setCTM(g, g.getCTM().multiply(k)); 316 317 if(typeof(stateTf) == "undefined") 318 stateTf = g.getCTM().inverse(); 319 320 stateTf = stateTf.multiply(k.inverse()); 321 } 322 323 /** 324 * Handle mouse move event. 325 */ 326 function handleMouseMove(evt) { 327 if(evt.preventDefault) 328 evt.preventDefault(); 329 330 evt.returnValue = false; 331 332 var svgDoc = evt.target.ownerDocument; 333 334 var g = getRoot(svgDoc); 335 336 if(state == 'pan' && enablePan) { 337 // Pan mode 338 var p = getEventPoint(evt).matrixTransform(stateTf); 339 340 setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y)); 341 } else if(state == 'drag' && enableDrag) { 342 // Drag mode 343 var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse()); 344 345 setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM())); 346 347 stateOrigin = p; 348 } 349 } 350 351 /** 352 * Handle click event. 353 */ 354 function handleMouseDown(evt) { 355 if(evt.preventDefault) 356 evt.preventDefault(); 357 358 evt.returnValue = false; 359 360 var svgDoc = evt.target.ownerDocument; 361 362 var g = getRoot(svgDoc); 363 364 if( 365 evt.target.tagName == "svg" 366 || !enableDrag // Pan anyway when drag is disabled and the user clicked on an element 367 ) { 368 // Pan mode 369 state = 'pan'; 370 371 stateTf = g.getCTM().inverse(); 372 373 stateOrigin = getEventPoint(evt).matrixTransform(stateTf); 374 } else { 375 // Drag mode 376 state = 'drag'; 377 378 stateTarget = evt.target; 379 380 stateTf = g.getCTM().inverse(); 381 382 stateOrigin = getEventPoint(evt).matrixTransform(stateTf); 383 } 384 } 385 386 /** 387 * Handle mouse button release event. 388 */ 389 function handleMouseUp(evt) { 390 if(evt.preventDefault) 391 evt.preventDefault(); 392 393 evt.returnValue = false; 394 395 var svgDoc = evt.target.ownerDocument; 396 397 if(state == 'pan' || state == 'drag') { 398 // Quit pan mode 399 state = ''; 400 } 401 } 402 403 ]]></script><g id="viewport" transform="scale(0.5,0.5) translate(0,0)">(go.string.hdr."</g>" go.string."</g>" go.string."</g>" 404 </g>Tgclocals5ba12c3ef7a52494f3303a6bf7fd24c7 Tgclocals7a323ca1c15880f1d654eb691e6746a0 go.string.hdr."<svg\\s*width=\"[^\"]+\"\\s*height=\"[^\"]+\"\\s*viewBox=\"[^\"]+\"" 7go.string."<svg\\s*width=\"[^\"]+\"\\s*height=\"[^\"]+\"\\s*viewBox=\"[^\"]+\""go.string."<svg\\s*width=\"[^\"]+\"\\s*height=\"[^\"]+\"\\s*viewBox=\"[^\"]+\""pp<svg\s*width="[^"]+"\s*height="[^"]+"\s*viewBox="[^"]+"Dgo.string.hdr."<g id=\"graph\\d\"" <go.string."<g id=\"graph\\d\""<go.string."<g id=\"graph\\d\"" <g id="graph\d",go.string.hdr."</svg>" $go.string."</svg>"$go.string."</svg>"</svg>Tgclocals33cdeccccebe80329f1fdbee7f5874cbTgclocals33cdeccccebe80329f1fdbee7f5874cb."".viewBox&type.*regexp.Regexp."".graphId&type.*regexp.Regexp."".svgClose&type.*regexp.Regexp0"".initdonetype.uint8"".Massagef"".Massage"".initf"".init"runtime.gcbits.01*go.string.hdr."[]int" "go.string."[]int""go.string."[]int"[]inttype.[]intf0 runtime.algarray@"runtime.gcbits.01P*go.string.hdr."[]int"p&go.weak.type.*[]int"runtime.zerovaluetype.int.go.typelink.[]int []inttype.[]int.go.string.hdr."[]uint8" &go.string."[]uint8"&go.string."[]uint8"[]uint8type.[]uint8~.80 runtime.algarray@"runtime.gcbits.01P.go.string.hdr."[]uint8"p*go.weak.type.*[]uint8"runtime.zerovaluetype.uint86go.typelink.[]uint8 []uint8type.[]uint8.go.string.hdr."runtime" &go.string."runtime"&go.string."runtime"runtime,go.importpath.runtime. &go.string."runtime"*go.string.hdr."bytes" "go.string."bytes""go.string."bytes"bytes(go.importpath.bytes. "go.string."bytes",go.string.hdr."regexp" $go.string."regexp"$go.string."regexp"regexp*go.importpath.regexp. $go.string."regexp".go.string.hdr."strings" &go.string."strings"&go.string."strings"strings,go.importpath.strings. &go.string."strings""runtime.zerovaluego13ld