hunk.code_window:   }
     function updateState() {
       state.failed = errors.size
       state.active = destination.destinations.length - state.failed
       if (step === 'flashing') {
         state.flashing = state.active
         state.verifying = 0
  
hunk.labels: keep add keep keep keep keep keep
hunk.after_edit:     state.type = step
  
hunk.file_path: lib/gui/modules/child-writer.js
hunk.type: add
file: /*
   * Copyright 2016 resin.io
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  svg-icon > img[disabled] {
    opacity: $disabled-opacity;
  }
  
  .page-main {
    flex: 1;
    align-self: center;
  }
  
  .page-main > .col-xs {
    height: 165px;
  }
  
  .page-main .step-selection-text {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    color: $palette-theme-dark-foreground;
  }
  
  .page-main .text-disabled > span {
    color: $palette-theme-dark-disabled-foreground;
  }
  
  .page-main .step-drive.text-warning {
    color: $palette-theme-warning-background;
  }
  
  .page-main .relative {
    position: relative;
  }
  
  .page-main .button-brick {
    width: 200px;
    height: 48px;
    font-size: 16px;
  }
  
  .page-main .button-abort-write {
    width: 20px;
    height: 20px;
    margin: 0;
    padding: 0;
    font-size: 16px;
    position: absolute;
    right: -17px;
    top: 30%;
  }
  
  .button-brick {
    width: 200px;
    height: 48px;
    font-size: 16px;
  }
  
  %step-border {
    height: 2px;
    background-color: $palette-theme-dark-foreground;
    position: absolute;
    width: 124px;
    top: 19px;
  
    &[disabled] {
      background-color: $palette-theme-dark-disabled-foreground;
    }
  }
  
  .page-main .step-border-left {
    @extend %step-border;
    left: -67px;
  }
  
  .page-main .step-border-right {
    @extend %step-border;
    right: -67px;
  }
  
  .page-main .step-tooltip {
    display: block;
    margin: -5px auto -20px;
    color: $palette-theme-dark-disabled-foreground;
    font-size: 10px;
  }
  
  .page-main .step-footer {
    width: 100%;
    color: $palette-theme-dark-disabled-foreground;
    font-size: 10px;
  }
  
  .page-main p.step-footer {
    margin-top: 9px;
  }
  
  .page-main .step-footer-split {
    position: absolute;
    top: 39px;
    left: 28px;
    margin-left: auto;
    margin-right: auto;
    display: flex;
    justify-content: space-between;
    width: $btn-min-width;
  }
  
  .page-main .step-footer-underline {
    border-bottom: 1px dotted;
    padding-bottom: 2px;
  }
  
  .page-main .button.step-footer {
    font-size: 12px;
    color: $palette-theme-primary-background;
    border-radius: 0;
    padding: 0;
  }
  
  .page-main .step-drive.glyphicon {
    margin-top: 1px;
  }
  
  .page-main div.step-fill,
  .page-main span.step-fill {
    margin-top: 25px;
  }
  
  .page-main .step-drive.step-list {
    &::-webkit-scrollbar {
      width: 4px;
    }
  
    &::-webkit-scrollbar-thumb {
      background-color: $palette-theme-dark-disabled-foreground;
      border-radius: 4px;
    }
  }
  
  .page-main .glyphicon {
    vertical-align: text-top;
  }
  
  .page-main .step-name {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 39px;
    width: 100%;
    font-weight: bold;
    color: $palette-theme-primary-foreground;
  }
  
  .page-main .step-size {
    color: $palette-theme-dark-disabled-foreground;
    margin-top: 10px;
  }
  
  .page-main .step-list {
    height: 80px;
    margin: 15px;
    overflow-y: auto;
    color: $palette-theme-dark-disabled-foreground;
  }
  
  .target-status-wrap {
    display: flex;
    position: absolute;
    top: 62px;
    flex-direction: column;
    margin: 8px 28px;
    align-items: flex-start;
  }
  
  .target-status-line {
    display: flex;
    align-items: baseline;
    font-size: 14px;
    font-family: inherit;
  
    > .target-status-dot {
      width: 12px;
      height: 12px;
      border-radius: 50%;
      margin-right: 10px;
    }
  
    &.target-status-successful > .target-status-dot {
      background-color: $palette-theme-success-background;
    }
    &.target-status-failed > .target-status-dot {
      background-color: $palette-theme-danger-background;
    }
  
    > .target-status-quantity {
      color: white;
      font-weight: bold;
    }
  
    > .target-status-message {
      color: gray;
      margin-left: 10px;
    }
  }
  
  .tooltip-inner {
    white-space: pre-line;
  }
  
  .space-vertical-large {
    position: relative;
  }
  