browser/themes/shared/devtools/debugger.inc.css

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

michael@0 1 /* vim:set ts=2 sw=2 sts=2 et: */
michael@0 2 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 5
michael@0 6 /* Sources and breakpoints pane */
michael@0 7
michael@0 8 #sources-pane[selectedIndex="0"] + #sources-and-editor-splitter {
michael@0 9 border-color: transparent;
michael@0 10 }
michael@0 11
michael@0 12 #sources-pane > tabs {
michael@0 13 -moz-border-end: 1px solid;
michael@0 14 }
michael@0 15
michael@0 16 #sources-pane .devtools-toolbar {
michael@0 17 border: none; /* Remove the devtools-toolbar bottom border. */
michael@0 18 -moz-border-end: 1px solid;
michael@0 19 }
michael@0 20
michael@0 21 .theme-dark #sources-pane > tabs,
michael@0 22 .theme-dark #sources-pane .devtools-toolbar {
michael@0 23 -moz-border-end-color: black; /* Match the splitter color. */
michael@0 24 }
michael@0 25
michael@0 26 .theme-light #sources-pane > tabs,
michael@0 27 .theme-light #sources-pane .devtools-toolbar {
michael@0 28 -moz-border-end-color: #aaa; /* Match the splitter color. */
michael@0 29 }
michael@0 30
michael@0 31 /* Sources and breakpoints list */
michael@0 32
michael@0 33 .dbg-source-item {
michael@0 34 padding: 2px 0px;
michael@0 35 }
michael@0 36
michael@0 37 .dbg-breakpoint-line {
michael@0 38 font-weight: 600;
michael@0 39 }
michael@0 40
michael@0 41 .dbg-breakpoint-text {
michael@0 42 -moz-padding-start: 6px;
michael@0 43 font-style: italic;
michael@0 44 font-size: 90%;
michael@0 45 }
michael@0 46
michael@0 47 .dbg-breakpoint-checkbox {
michael@0 48 width: 16px;
michael@0 49 height: 16px;
michael@0 50 margin: 2px;
michael@0 51 }
michael@0 52
michael@0 53 /* Sources toolbar */
michael@0 54
michael@0 55 #sources-toolbar > .devtools-toolbarbutton,
michael@0 56 #sources-controls > .devtools-toolbarbutton {
michael@0 57 min-width: 32px;
michael@0 58 }
michael@0 59
michael@0 60 #black-box {
michael@0 61 list-style-image: url(debugger-blackbox.png);
michael@0 62 }
michael@0 63
michael@0 64 #pretty-print {
michael@0 65 font-weight: bold;
michael@0 66 }
michael@0 67
michael@0 68 #toggle-breakpoints {
michael@0 69 list-style-image: url(debugger-toggleBreakpoints.png);
michael@0 70 }
michael@0 71
michael@0 72 #sources-toolbar .devtools-toolbarbutton:not([label]) {
michael@0 73 -moz-image-region: rect(0px,16px,16px,0px);
michael@0 74 }
michael@0 75
michael@0 76 #sources-toolbar .devtools-toolbarbutton:not([label])[checked] {
michael@0 77 -moz-image-region: rect(0px,32px,16px,16px);
michael@0 78 }
michael@0 79
michael@0 80 #sources .black-boxed {
michael@0 81 color: rgba(128,128,128,0.4);
michael@0 82 }
michael@0 83
michael@0 84 #sources .selected > .black-boxed {
michael@0 85 color: rgba(255,255,255,0.4);
michael@0 86 }
michael@0 87
michael@0 88 #sources .black-boxed > .dbg-breakpoint {
michael@0 89 display: none;
michael@0 90 }
michael@0 91
michael@0 92 /* Black box message and source progress meter */
michael@0 93
michael@0 94 #black-boxed-message,
michael@0 95 #source-progress-container {
michael@0 96 background: url(background-noise-toolbar.png);
michael@0 97 /* Prevent the container deck from aquiring the size from this message. */
michael@0 98 min-width: 1px;
michael@0 99 min-height: 1px;
michael@0 100 }
michael@0 101
michael@0 102 #source-progress {
michael@0 103 min-height: 2em;
michael@0 104 min-width: 40em;
michael@0 105 }
michael@0 106
michael@0 107 #black-boxed-message-label,
michael@0 108 #black-boxed-message-button {
michael@0 109 text-align: center;
michael@0 110 font-size: 120%;
michael@0 111 }
michael@0 112
michael@0 113 #black-boxed-message-button {
michael@0 114 margin-top: 1em;
michael@0 115 padding: .25em;
michael@0 116 }
michael@0 117
michael@0 118 /* Breadcrumbs stack frames view */
michael@0 119
michael@0 120 .dbg-stackframe-details {
michael@0 121 -moz-padding-start: 4px;
michael@0 122 }
michael@0 123
michael@0 124 /* Classic stack frames view */
michael@0 125
michael@0 126 .dbg-classic-stackframe {
michael@0 127 display: block;
michael@0 128 }
michael@0 129
michael@0 130 .dbg-classic-stackframe-title {
michael@0 131 font-weight: 600;
michael@0 132 }
michael@0 133
michael@0 134 .dbg-classic-stackframe-details:-moz-locale-dir(ltr) {
michael@0 135 float: right;
michael@0 136 }
michael@0 137
michael@0 138 .dbg-classic-stackframe-details:-moz-locale-dir(rtl) {
michael@0 139 float: left;
michael@0 140 }
michael@0 141
michael@0 142 .dbg-classic-stackframe-details-url {
michael@0 143 max-width: 90%;
michael@0 144 text-align: end;
michael@0 145 }
michael@0 146
michael@0 147 .theme-dark .dbg-classic-stackframe-details-url {
michael@0 148 color: #a9bacb; /* Light content text */
michael@0 149 }
michael@0 150
michael@0 151 .theme-light .dbg-classic-stackframe-details-url {
michael@0 152 color: #667380; /* Dark grey content text */
michael@0 153 }
michael@0 154
michael@0 155 .theme-dark .dbg-classic-stackframe-details-sep {
michael@0 156 color: #b6babf; /* Grey foreground text */
michael@0 157 }
michael@0 158
michael@0 159 .theme-light .dbg-classic-stackframe-details-sep {
michael@0 160 color: #585959; /* Grey foreground text */
michael@0 161 }
michael@0 162
michael@0 163 .theme-dark .dbg-classic-stackframe-details-line {
michael@0 164 color: #5e88b0; /* Highlight blue grey */
michael@0 165 }
michael@0 166
michael@0 167 .theme-light .dbg-classic-stackframe-details-line {
michael@0 168 color: #5f88b0; /* Highlight blue grey */
michael@0 169 }
michael@0 170
michael@0 171 #callstack-list .selected label {
michael@0 172 /* Text inside a selected item should not be custom colored. */
michael@0 173 color: inherit !important;
michael@0 174 }
michael@0 175
michael@0 176 /* Tracer */
michael@0 177
michael@0 178 #trace {
michael@0 179 list-style-image: url(tracer-icon.png);
michael@0 180 -moz-image-region: rect(0px,16px,16px,0px);
michael@0 181 }
michael@0 182
michael@0 183 #trace[checked] {
michael@0 184 -moz-image-region: rect(0px,32px,16px,16px);
michael@0 185 }
michael@0 186
michael@0 187 #clear-tracer {
michael@0 188 /* Make this button as narrow as the text inside it. */
michael@0 189 min-width: 1px;
michael@0 190 }
michael@0 191
michael@0 192 .trace-name {
michael@0 193 -moz-padding-start: 4px;
michael@0 194 }
michael@0 195
michael@0 196 /* Tracer dark theme */
michael@0 197
michael@0 198 .theme-dark .trace-item {
michael@0 199 color: #f5f7fa; /* Light foreground text */
michael@0 200 }
michael@0 201
michael@0 202 .theme-dark .trace-item.selected-matching {
michael@0 203 background-color: rgba(29,79,115,.4); /* Select highlight blue at 40% alpha */
michael@0 204 }
michael@0 205
michael@0 206 .theme-dark .selected > .trace-item {
michael@0 207 background-color: rgba(29,79,115,.6); /* Select highlight blue at 60% alpha */
michael@0 208 }
michael@0 209
michael@0 210 .theme-dark .trace-call {
michael@0 211 color: #46afe3; /* Highlight blue */
michael@0 212 }
michael@0 213
michael@0 214 .theme-dark .trace-return,
michael@0 215 .theme-dark .trace-yield {
michael@0 216 color: #70bf53; /* Highlight green */
michael@0 217 }
michael@0 218
michael@0 219 .theme-dark .trace-throw {
michael@0 220 color: #eb5368; /* Highlight red */
michael@0 221 }
michael@0 222
michael@0 223 .theme-dark .trace-param {
michael@0 224 color: #a9bacb; /* Content text light */
michael@0 225 }
michael@0 226
michael@0 227 .theme-dark .trace-syntax {
michael@0 228 color: #8fa1b2; /* Content text grey */
michael@0 229 }
michael@0 230
michael@0 231 /* Tracer light theme */
michael@0 232
michael@0 233 .theme-light .trace-item {
michael@0 234 color: #292e33; /* Dark foreground text */
michael@0 235 }
michael@0 236
michael@0 237 .theme-light .trace-item.selected-matching {
michael@0 238 background-color: rgba(76,158,217,.4); /* Select highlight blue at 40% alpha */
michael@0 239 }
michael@0 240
michael@0 241 .theme-light .selected > .trace-item {
michael@0 242 background-color: rgba(76,158,217,.6); /* Select highlight blue at 60% alpha */
michael@0 243 }
michael@0 244
michael@0 245 .theme-light .trace-call {
michael@0 246 color: #0088cc; /* Highlight blue */
michael@0 247 }
michael@0 248
michael@0 249 .theme-light .trace-return,
michael@0 250 .theme-light .trace-yield {
michael@0 251 color: #2cbb0f; /* Highlight green */
michael@0 252 }
michael@0 253
michael@0 254 .theme-light .trace-throw {
michael@0 255 color: #ed2655; /* Highlight red */
michael@0 256 }
michael@0 257
michael@0 258 .theme-light .trace-param {
michael@0 259 color: #667380; /* Content text dark grey */
michael@0 260 }
michael@0 261
michael@0 262 .theme-light .trace-syntax {
michael@0 263 color: #8fa1b2; /* Content text grey */
michael@0 264 }
michael@0 265
michael@0 266 #tracer-traces .selected label {
michael@0 267 /* Text inside a selected item should not be custom colored. */
michael@0 268 color: inherit !important;
michael@0 269 }
michael@0 270
michael@0 271 /* Watch expressions view */
michael@0 272
michael@0 273 #expressions {
michael@0 274 min-height: 10px;
michael@0 275 max-height: 125px;
michael@0 276 }
michael@0 277
michael@0 278 .dbg-expression {
michael@0 279 height: 20px;
michael@0 280 }
michael@0 281
michael@0 282 .dbg-expression-arrow {
michael@0 283 width: 16px;
michael@0 284 height: auto;
michael@0 285 margin: 2px;
michael@0 286 background: -moz-image-rect(url(commandline-icon.png), 0, 32, 16, 16);
michael@0 287 }
michael@0 288
michael@0 289 .dbg-expression-input {
michael@0 290 color: inherit;
michael@0 291 }
michael@0 292
michael@0 293 .dbg-expression-button {
michael@0 294 -moz-appearance: none;
michael@0 295 border: none;
michael@0 296 background: none;
michael@0 297 cursor: pointer;
michael@0 298 text-decoration: underline;
michael@0 299 }
michael@0 300
michael@0 301 .theme-dark .dbg-expression-button {
michael@0 302 color: #46afe3; /* Blue highlight color */
michael@0 303 }
michael@0 304
michael@0 305 .theme-light .dbg-expression-button {
michael@0 306 color: #0088cc; /* Blue highlight color */
michael@0 307 }
michael@0 308
michael@0 309 /* Event listeners view */
michael@0 310
michael@0 311 .dbg-event-listener-type {
michael@0 312 font-weight: 600;
michael@0 313 }
michael@0 314
michael@0 315 .theme-dark .dbg-event-listener-location {
michael@0 316 color: #a9bacb; /* Light content text */
michael@0 317 }
michael@0 318
michael@0 319 .theme-light .dbg-event-listener-location {
michael@0 320 color: #667380; /* Dark grey content text */
michael@0 321 }
michael@0 322
michael@0 323 .theme-dark .dbg-event-listener-separator {
michael@0 324 color: #b6babf; /* Grey foreground text */
michael@0 325 }
michael@0 326
michael@0 327 .theme-light .dbg-event-listener-separator {
michael@0 328 color: #585959; /* Grey foreground text */
michael@0 329 }
michael@0 330
michael@0 331 .theme-dark .dbg-event-listener-targets {
michael@0 332 color: #5e88b0; /* Highlight blue grey */
michael@0 333 }
michael@0 334
michael@0 335 .theme-light .dbg-event-listener-targets {
michael@0 336 color: #5f88b0; /* Highlight blue grey */
michael@0 337 }
michael@0 338
michael@0 339 .theme-dark #event-listeners .selected {
michael@0 340 /* Selected items shouldn't be displayed differently. */
michael@0 341 background: none;
michael@0 342 color: #fff;
michael@0 343 }
michael@0 344
michael@0 345 .theme-light #event-listeners .selected {
michael@0 346 /* Selected items shouldn't be displayed differently. */
michael@0 347 background: none;
michael@0 348 color: #000;
michael@0 349 }
michael@0 350
michael@0 351 /* Searchbox and the search operations help panel */
michael@0 352
michael@0 353 #searchbox {
michael@0 354 min-width: 220px;
michael@0 355 -moz-margin-start: 1px;
michael@0 356 }
michael@0 357
michael@0 358 #filter-label {
michael@0 359 -moz-margin-start: 2px;
michael@0 360 }
michael@0 361
michael@0 362 #searchbox-panel-operators {
michael@0 363 margin-top: 5px;
michael@0 364 margin-bottom: 8px;
michael@0 365 -moz-margin-start: 2px;
michael@0 366 }
michael@0 367
michael@0 368 .searchbox-panel-operator-button {
michael@0 369 min-width: 26px;
michael@0 370 margin-top: 0;
michael@0 371 margin-bottom: 0;
michael@0 372 -moz-margin-start: 2px;
michael@0 373 -moz-margin-end: 6px;
michael@0 374 text-align: center;
michael@0 375 }
michael@0 376
michael@0 377 .searchbox-panel-operator-label {
michael@0 378 padding-bottom: 2px;
michael@0 379 }
michael@0 380
michael@0 381 /* Searchbox results panel */
michael@0 382
michael@0 383 #results-panel {
michael@0 384 border: none;
michael@0 385 }
michael@0 386
michael@0 387 .results-panel-item {
michael@0 388 padding: 6px 8px;
michael@0 389 border-top: 1px solid rgba(128,128,128,0.2);
michael@0 390 }
michael@0 391
michael@0 392 .results-panel-item:first-of-type {
michael@0 393 border-top: none;
michael@0 394 }
michael@0 395
michael@0 396 .results-panel-item-label {
michael@0 397 font-weight: 600;
michael@0 398 }
michael@0 399
michael@0 400 .results-panel-item-label-before {
michael@0 401 -moz-padding-end: 6px;
michael@0 402 }
michael@0 403
michael@0 404 .theme-dark .results-panel-item-label {
michael@0 405 color: #f5f7fa; /* Light foreground text */
michael@0 406 }
michael@0 407
michael@0 408 .theme-light .results-panel-item-label {
michael@0 409 color: #18191a; /* Dark foreground text */
michael@0 410 }
michael@0 411
michael@0 412 .theme-dark .results-panel-item-label-before {
michael@0 413 color: #5e88b0; /* Highlight blue grey */
michael@0 414 }
michael@0 415
michael@0 416 .theme-light .results-panel-item-label-before {
michael@0 417 color: #5f88b0; /* Highlight blue grey */
michael@0 418 }
michael@0 419
michael@0 420 .theme-dark .results-panel-item-label-below {
michael@0 421 color: #5f7387; /* Dark grey content text */
michael@0 422 }
michael@0 423
michael@0 424 .theme-light .results-panel-item-label-below {
michael@0 425 color: #667380; /* Dark grey content text */
michael@0 426 }
michael@0 427
michael@0 428 #results-panel .selected label {
michael@0 429 /* Text inside a selected item should not be custom colored. */
michael@0 430 color: inherit !important;
michael@0 431 }
michael@0 432
michael@0 433 /* Sources search view */
michael@0 434
michael@0 435 #globalsearch {
michael@0 436 min-height: 10px;
michael@0 437 max-height: 50vh;
michael@0 438 }
michael@0 439
michael@0 440 .dbg-results-header {
michael@0 441 -moz-padding-start: 6px;
michael@0 442 }
michael@0 443
michael@0 444 .dbg-results-header-location {
michael@0 445 font-weight: 600;
michael@0 446 }
michael@0 447
michael@0 448 .dbg-results-header-match-count {
michael@0 449 -moz-padding-start: 6px;
michael@0 450 }
michael@0 451
michael@0 452 .dbg-results-line-number {
michael@0 453 min-width: 3em;
michael@0 454 -moz-border-end: 1px solid rgba(128,128,128,0.2);
michael@0 455 -moz-padding-end: 4px;
michael@0 456 text-align: end;
michael@0 457 }
michael@0 458
michael@0 459 .dbg-results-line-contents {
michael@0 460 -moz-padding-start: 4px;
michael@0 461 }
michael@0 462
michael@0 463 .dbg-results-line-contents-string[match=true] {
michael@0 464 background-color: rgba(255,255,0,0.2);
michael@0 465 border: 1px solid rgba(128,128,128,0.7);
michael@0 466 border-radius: 4px;
michael@0 467 margin-top: -1px !important;
michael@0 468 margin-bottom: -1px !important;
michael@0 469 cursor: pointer;
michael@0 470 }
michael@0 471
michael@0 472 .dbg-results-line-contents-string[match=true][focusing] {
michael@0 473 transition: transform 0.3s ease-in-out;
michael@0 474 }
michael@0 475
michael@0 476 .dbg-results-line-contents-string[match=true][focused] {
michael@0 477 transition-duration: 0.1s;
michael@0 478 transform: scale(1.75, 1.75);
michael@0 479 }
michael@0 480
michael@0 481 .theme-dark .dbg-source-results:not(.selected):hover {
michael@0 482 background-color: #181d20; /* Sidebar background */
michael@0 483 }
michael@0 484
michael@0 485 .theme-light .dbg-source-results:not(.selected):hover {
michael@0 486 background-color: #f7f7f7; /* Sidebar background */
michael@0 487 }
michael@0 488
michael@0 489 .theme-dark .dbg-results-header {
michael@0 490 background-color: #252c33; /* Tab toolbar */
michael@0 491 color: #a9bacb; /* Light content text */
michael@0 492 }
michael@0 493
michael@0 494 .theme-light .dbg-results-header {
michael@0 495 background-color: #ebeced; /* Tab toolbar */
michael@0 496 color: #667380; /* Dark grey content text */
michael@0 497 }
michael@0 498
michael@0 499 .theme-dark .dbg-search-result:hover {
michael@0 500 background-color: rgba(29,79,115,.2); /* Select highlight blue at 40% alpha */
michael@0 501 }
michael@0 502
michael@0 503 .theme-light .dbg-search-result:hover {
michael@0 504 background-color: rgba(76,158,217,.2); /* Select highlight blue at 40% alpha */
michael@0 505 }
michael@0 506
michael@0 507 .theme-dark .dbg-results-header-match-count {
michael@0 508 color: #5f7387; /* Dark grey content text */
michael@0 509 }
michael@0 510
michael@0 511 .theme-light .dbg-results-header-match-count {
michael@0 512 color: #667380; /* Dark grey content text */
michael@0 513 }
michael@0 514
michael@0 515 .theme-dark .dbg-results-line-number {
michael@0 516 background-color: #252c33; /* Tab toolbars */
michael@0 517 color: #b6babf; /* Grey foreground text */
michael@0 518 }
michael@0 519
michael@0 520 .theme-light .dbg-results-line-number {
michael@0 521 background-color: #ebeced; /* Tab toolbars */
michael@0 522 color: #585959; /* Grey foreground text */
michael@0 523 }
michael@0 524
michael@0 525 .theme-dark .dbg-results-line-contents-string {
michael@0 526 color: #b6babf; /* Grey foreground text */
michael@0 527 }
michael@0 528
michael@0 529 .theme-light .dbg-results-line-contents-string {
michael@0 530 color: #585959; /* Grey foreground text */
michael@0 531 }
michael@0 532
michael@0 533 .theme-dark .dbg-results-line-contents-string[match=true] {
michael@0 534 color: #f5f7fa; /* Light foreground text */
michael@0 535 }
michael@0 536
michael@0 537 .theme-light .dbg-results-line-contents-string[match=true] {
michael@0 538 color: #18191a; /* Dark foreground text */
michael@0 539 }
michael@0 540
michael@0 541 /* Toolbar controls */
michael@0 542
michael@0 543 .devtools-sidebar-tabs > tabs > tab {
michael@0 544 min-height: 1em !important;
michael@0 545 padding: 0 !important;
michael@0 546 }
michael@0 547
michael@0 548 #resume {
michael@0 549 list-style-image: url(debugger-pause.png);
michael@0 550 -moz-image-region: rect(0px,16px,16px,0px);
michael@0 551 transition: background 0.15s ease-in-out;
michael@0 552 }
michael@0 553
michael@0 554 #resume[checked] {
michael@0 555 background: none;
michael@0 556 list-style-image: url(debugger-play.png);
michael@0 557 -moz-image-region: rect(0px,32px,16px,16px);
michael@0 558 }
michael@0 559
michael@0 560 #resume ~ toolbarbutton {
michael@0 561 transition: opacity 0.15s ease-in-out;
michael@0 562 }
michael@0 563
michael@0 564 #resume:not([checked]) ~ toolbarbutton {
michael@0 565 opacity: 0.5;
michael@0 566 }
michael@0 567
michael@0 568 #step-over {
michael@0 569 list-style-image: url(debugger-step-over.png);
michael@0 570 }
michael@0 571
michael@0 572 #step-in {
michael@0 573 list-style-image: url(debugger-step-in.png);
michael@0 574 }
michael@0 575
michael@0 576 #step-out {
michael@0 577 list-style-image: url(debugger-step-out.png);
michael@0 578 }
michael@0 579
michael@0 580 #instruments-pane-toggle {
michael@0 581 background: none;
michael@0 582 box-shadow: none;
michael@0 583 border: none;
michael@0 584 list-style-image: url(debugger-collapse.png);
michael@0 585 -moz-image-region: rect(0px,16px,16px,0px);
michael@0 586 }
michael@0 587
michael@0 588 #instruments-pane-toggle[pane-collapsed] {
michael@0 589 list-style-image: url(debugger-expand.png);
michael@0 590 }
michael@0 591
michael@0 592 #instruments-pane-toggle:active {
michael@0 593 -moz-image-region: rect(0px,32px,16px,16px);
michael@0 594 }
michael@0 595
michael@0 596 /* Horizontal vs. vertical layout */
michael@0 597
michael@0 598 #vertical-layout-panes-container {
michael@0 599 min-height: 35vh;
michael@0 600 max-height: 80vh;
michael@0 601 }
michael@0 602
michael@0 603 #body[layout=vertical] #sources-pane > tabs {
michael@0 604 -moz-border-end: none;
michael@0 605 }
michael@0 606
michael@0 607 #body[layout=vertical] #instruments-pane {
michael@0 608 margin: 0 !important;
michael@0 609 /* To prevent all the margin hacks to hide the sidebar. */
michael@0 610 }
michael@0 611
michael@0 612 #body[layout=vertical] .side-menu-widget-container,
michael@0 613 #body[layout=vertical] .side-menu-widget-empty-text {
michael@0 614 box-shadow: none !important;
michael@0 615 }
michael@0 616
michael@0 617 #body[layout=vertical] .side-menu-widget-item-arrow {
michael@0 618 background-image: none !important;
michael@0 619 }
michael@0 620
michael@0 621 #body[layout=vertical] .side-menu-widget-group,
michael@0 622 #body[layout=vertical] .side-menu-widget-item {
michael@0 623 -moz-margin-end: 0;
michael@0 624 }

mercurial