function traverseStaticChildren(n1, n2, shallow = false) {
    const ch1 = n1.children;
    const ch2 = n2.children;
    if (isArray(ch1) && isArray(ch2)) {
        for (let i = 0; i < ch1.length; i++) {
            // this is only called in the optimized path so array children are
            // guaranteed to be vnodes
            const c1 = ch1[i];
            let c2 = ch2[i];
            if (c2.shapeFlag & 1 /* ELEMENT */ && !c2.dynamicChildren) {
                if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* HYDRATE_EVENTS */) {
                    c2 = ch2[i] = cloneIfMounted(ch2[i]);
                    c2.el = c1.el;
                }
                if (!shallow)
                    traverseStaticChildren(c1, c2);
            }
            // also inherit for comment nodes, but not placeholders (e.g. v-if which
            // would have received .el during block patch)
            if ( c2.type === Comment && !c2.el) {
                c2.el = c1.el;
            }
        }
    }
}
/**
 * #1156
 * When a component is HMR-enabled, we need to make sure that all static nodes
 * inside a block also inherit the DOM element from the previous tree so that
 * HMR updates (which are full updates) can retrieve the element for patching.
 *
 * #2080
 * Inside keyed `template` fragment static children, if a fragment is moved,
 * the children will always moved so that need inherit el form previous nodes
 * to ensure correct moved position.
 */
#1156
When a component is HMR-enabled, we need to make sure that all static nodes
inside a block also inherit the DOM element from the previous tree so that
HMR updates (which are full updates) can retrieve the element for patching.

#2080
Inside keyed `template` fragment static children, if a fragment is moved,
the children will always moved so that need inherit el form previous nodes
to ensure correct moved position.
#1156 When a component is HMR - enabled we need to make sure that all static nodes inside a block also inherit the DOM element from the previous tree so that HMR updates ( which are full updates ) can retrieve the element for patching . #2080 Inside keyed ` template ` fragment static children if a fragment is moved the children will always moved so that need inherit el form previous nodes to ensure correct moved position .
function traverseStaticChildren(n1, n2, shallow = false) {
    const ch1 = n1.children;
    const ch2 = n2.children;
    if (isArray(ch1) && isArray(ch2)) {
        for (let i = 0; i < ch1.length; i++) {
            const c1 = ch1[i];
            let c2 = ch2[i];
            if (c2.shapeFlag & 1  && !c2.dynamicChildren) {
                if (c2.patchFlag <= 0 || c2.patchFlag === 32 ) {
                    c2 = ch2[i] = cloneIfMounted(ch2[i]);
                    c2.el = c1.el;
                }
                if (!shallow)
                    traverseStaticChildren(c1, c2);
            }
            if ( c2.type === Comment && !c2.el) {
                c2.el = c1.el;
            }
        }
    }
}
function traverseStaticChildren ( n1 , n2 , shallow = false ) { const ch1 = n1 . children ; const ch2 = n2 . children ; if ( isArray ( ch1 ) && isArray ( ch2 ) ) { for ( let i = 0 ; i < ch1 . length ; i ++ ) { const c1 = ch1 [ i ] ; let c2 = ch2 [ i ] ; if ( c2 . shapeFlag & 1 && ! c2 . dynamicChildren ) { if ( c2 . patchFlag <= 0 || c2 . patchFlag === 32 ) { c2 = ch2 [ i ] = cloneIfMounted ( ch2 [ i ] ) ; c2 . el = c1 . el ; } if ( ! shallow ) traverseStaticChildren ( c1 , c2 ) ; } if ( c2 . type === Comment && ! c2 . el ) { c2 . el = c1 . el ; } } } }
#1156
 When a component is HMR-enabled, we need to make sure that all static nodes
 inside a block also inherit the DOM element from the previous tree so that
 HMR updates (which are full updates) can retrieve the element for patching.
#1156 When a component is HMR - enabled we need to make sure that all static nodes inside a block also inherit the DOM element from the previous tree so that HMR updates ( which are full updates ) can retrieve the element for patching .
// this is only called in the optimized path so array children are // guaranteed to be vnodes /* ELEMENT */ /* HYDRATE_EVENTS */ // also inherit for comment nodes, but not placeholders (e.g. v-if which // would have received .el during block patch)