<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>216769</bug_id>
          
          <creation_ts>2020-09-21 03:00:31 -0700</creation_ts>
          <short_desc>Indexed DB transactions outdated immediately after it just created</short_desc>
          <delta_ts>2021-03-12 07:21:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Safari 13</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222746</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>wards.afar.0j</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>brunow</cc>
    
    <cc>cdumez</cc>
    
    <cc>contact</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>grant</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690270</commentid>
    <comment_count>0</comment_count>
    <who name="">wards.afar.0j</who>
    <bug_when>2020-09-21 03:00:31 -0700</bug_when>
    <thetext>Reproduction:

Note: idb is a famous library that wrap IndexedDB API into Promise style to make it easier to use.

It does not contains high level abstractions so it is likely not the bug of idb itself.

For reference, this issue is also tracked in the https://github.com/jakearchibald/idb/issues/201

Expected result on Chrome and Firefox:
https://user-images.githubusercontent.com/5390719/93753730-358a2900-fc33-11ea-80a5-b7d4f3eb731e.png

Bad result on Safari:
https://user-images.githubusercontent.com/5390719/93753660-12f81000-fc33-11ea-94c5-7771dab160c2.png

```js
import(&apos;https://cdn.skypack.dev/idb@5.0.6/with-async-ittr&apos;).then(async (idb) =&gt; {
    await idb.deleteDB(&apos;test&apos;)
    const sleep = (ms) =&gt; new Promise((resolve) =&gt; setTimeout(resolve, ms))
    const openDB = (() =&gt; {
        /** @type {import(&apos;idb&apos;).IDBPDatabase&lt;unknown&gt;} */
        let db = undefined
        return async () =&gt; {
            if (db) return db
            if (!db)
                db = await idb.openDB(&apos;test&apos;, 1, {
                    upgrade(db, oldVersion, newVersion, transaction) {
                        db.createObjectStore(&apos;store&apos;)
                    },
                })
            db.addEventListener(&apos;close&apos;, () =&gt; (db = undefined))
            return db
        }
    })()
    /** @type {import(&apos;idb&apos;).IDBPTransaction&lt;unknown, [&quot;store&quot;]&gt;} */
    let transaction = undefined
    const beforeTx = async () =&gt; {
        try {
            await transaction.objectStore(&apos;store&apos;).openCursor(IDBKeyRange.only(&apos;a&apos;))
            console.log(&apos;The transaction is alive!&apos;)
        } catch (e) {
            console.log(&apos;Transaction outdated&apos;, e, &apos;creating new one&apos;)
            transaction = (await openDB()).transaction(&apos;store&apos;, &apos;readwrite&apos;)
        }
    }
    await beforeTx()
    await transaction.store.add({ a: 1 }, &apos;a&apos;)
    console.log(&apos;added a&apos;)
    await beforeTx()
    await transaction.store.add({ a: 1 }, &apos;b&apos;)
    console.log(&apos;added b&apos;)

    await sleep(120)
    await beforeTx()
    await transaction.store.add({ a: 1 }, &apos;c&apos;)
    console.log(&apos;added c&apos;)

    await sleep(120)
    console.log(&apos;before call beforeTx&apos;)
    await beforeTx()
    console.log(&apos;after call beforeTx&apos;)
    const cursor = await transaction.store.openCursor(IDBKeyRange.only(&apos;a&apos;))
    console.log(cursor.value)
    const next = await cursor.continue()
    console.log(next)
})
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690271</commentid>
    <comment_count>1</comment_count>
    <who name="">wards.afar.0j</who>
    <bug_when>2020-09-21 03:01:47 -0700</bug_when>
    <thetext>This issues happens on Safari 12 to 14.0 (15610.1.28.1.9, 15610)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690446</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-21 12:48:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/69321075&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690938</commentid>
    <comment_count>3</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-22 16:57:41 -0700</bug_when>
    <thetext>(In reply to zjwpeter from comment #1)
&gt; This issues happens on Safari 12 to 14.0 (15610.1.28.1.9, 15610)

Hi, 

Are you referring to the exception thrown after sleep(120)?

The behavior seems correct according to spec:
https://w3c.github.io/IndexedDB/#transaction-finished, &quot;automatic committing&quot;. Transaction is supposed to be short-lived, and it will be automatically if there is no pending request and no request is to be created synchronously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690953</commentid>
    <comment_count>4</comment_count>
    <who name="">wards.afar.0j</who>
    <bug_when>2020-09-22 17:23:28 -0700</bug_when>
    <thetext>Hi I understand this idea of transaction auto commits.
You can see I use a function to check if the transaction has been outdated every time before I start a transaction operation.
My check do work, if the transaction has been outdated, it will create a new transaction immediately.

After the new transaction created there is no any synchronous operation, on the chrome and Firefox, this work well. But on the safari it seems like it is possible that the transaction is outdated immediately just after it has been created.

Please carefully check my example again, I didn&apos;t include a wrong usage of indexed DB transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690979</commentid>
    <comment_count>5</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-22 19:18:30 -0700</bug_when>
    <thetext>(In reply to zjwpeter from comment #4)
&gt; Hi I understand this idea of transaction auto commits.
&gt; You can see I use a function to check if the transaction has been outdated
&gt; every time before I start a transaction operation.
&gt; My check do work, if the transaction has been outdated, it will create a new
&gt; transaction immediately.
&gt; 
&gt; After the new transaction created there is no any synchronous operation, on
&gt; the chrome and Firefox, this work well. But on the safari it seems like it
&gt; is possible that the transaction is outdated immediately just after it has
&gt; been created.
&gt; 
&gt; Please carefully check my example again, I didn&apos;t include a wrong usage of
&gt; indexed DB transaction.

ah sorry, I misunderstood your question. You meant 
await transaction.store.add({ a: 1 }, &apos;c&apos;)
fails as newly created transaction by beforeTx() is inactive. This seems a real bug.

Specifically, we are deactivating transaction when vm is idle:
vm.whenIdle([protectedThis = makeRef(*this)]() {
    protectedThis-&gt;deactivate();
});

I don&apos;t know why we need this, changelog does not provide explanation either: https://trac.webkit.org/changeset/198762/webkit. Maybe we should remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691153</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-23 09:59:03 -0700</bug_when>
    <thetext>(In reply to Sihui Liu from comment #5)
&gt; (In reply to zjwpeter from comment #4)
&gt; &gt; Hi I understand this idea of transaction auto commits.
&gt; &gt; You can see I use a function to check if the transaction has been outdated
&gt; &gt; every time before I start a transaction operation.
&gt; &gt; My check do work, if the transaction has been outdated, it will create a new
&gt; &gt; transaction immediately.
&gt; &gt; 
&gt; &gt; After the new transaction created there is no any synchronous operation, on
&gt; &gt; the chrome and Firefox, this work well. But on the safari it seems like it
&gt; &gt; is possible that the transaction is outdated immediately just after it has
&gt; &gt; been created.
&gt; &gt; 
&gt; &gt; Please carefully check my example again, I didn&apos;t include a wrong usage of
&gt; &gt; indexed DB transaction.
&gt; 
&gt; ah sorry, I misunderstood your question. You meant 
&gt; await transaction.store.add({ a: 1 }, &apos;c&apos;)
&gt; fails as newly created transaction by beforeTx() is inactive. This seems a
&gt; real bug.
&gt; 
&gt; Specifically, we are deactivating transaction when vm is idle:
&gt; vm.whenIdle([protectedThis = makeRef(*this)]() {
&gt;     protectedThis-&gt;deactivate();
&gt; });
&gt; 
&gt; I don&apos;t know why we need this, changelog does not provide explanation
&gt; either: https://trac.webkit.org/changeset/198762/webkit. Maybe we should
&gt; remove this.

Another look at the spec today, https://w3c.github.io/IndexedDB/#transaction-inactive
says transaction is inactive when control returns to event loop. For this test case, IIUC, transaction being and records being added are two tasks, i.e. execute JS -&gt; JS VM idle(deactivating transaction) -&gt; execute JS... in this perspective, it seems right to deactivate the transaction :|. @Brady may know more as he initially added this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691340</commentid>
    <comment_count>7</comment_count>
    <who name="">wards.afar.0j</who>
    <bug_when>2020-09-23 17:57:48 -0700</bug_when>
    <thetext>&gt; Another look at the spec today, https://w3c.github.io/IndexedDB/#transaction-inactive
&gt; says transaction is inactive when control returns to event loop. For this test case, IIUC, transaction being and records being added are two tasks, i.e. execute JS -&gt; JS VM idle(deactivating transaction) -&gt; execute JS... in this perspective, it seems right to deactivate the transaction :|. @Brady may know more as he initially added this.


It says &quot;A transaction is in this state(inactive) after control returns to the event loop after its creation&quot;. But Promises and async function are not join the event loop, they are microtasks.

&gt; A microtask is a short function which is executed after the function or program which created it exits and only if the JavaScript execution stack is empty, but before returning control to the event loop being used by the user agent to drive the script&apos;s execution environment

(https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API/Microtask_guide)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691380</commentid>
    <comment_count>8</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-09-23 21:40:08 -0700</bug_when>
    <thetext>(In reply to zjwpeter from comment #7)
&gt; &gt; Another look at the spec today, https://w3c.github.io/IndexedDB/#transaction-inactive
&gt; &gt; says transaction is inactive when control returns to event loop. For this test case, IIUC, transaction being and records being added are two tasks, i.e. execute JS -&gt; JS VM idle(deactivating transaction) -&gt; execute JS... in this perspective, it seems right to deactivate the transaction :|. @Brady may know more as he initially added this.
&gt; 
&gt; 
&gt; It says &quot;A transaction is in this state(inactive) after control returns to
&gt; the event loop after its creation&quot;. But Promises and async function are not
&gt; join the event loop, they are microtasks.
&gt; 
&gt; &gt; A microtask is a short function which is executed after the function or program which created it exits and only if the JavaScript execution stack is empty, but before returning control to the event loop being used by the user agent to drive the script&apos;s execution environment
&gt; 
&gt; (https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API/
&gt; Microtask_guide)

Thanks for the info. I confirmed transaction being created is in the same runloop task with record being added, so VM::whenIdle is definitely not what should be used here, as it does not tell us when control is returned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693804</commentid>
    <comment_count>9</comment_count>
      <attachid>410245</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-10-01 11:26:55 -0700</bug_when>
    <thetext>Created attachment 410245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693813</commentid>
    <comment_count>10</comment_count>
      <attachid>410249</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-10-01 11:41:29 -0700</bug_when>
    <thetext>Created attachment 410249
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693816</commentid>
    <comment_count>11</comment_count>
      <attachid>410252</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-10-01 11:47:47 -0700</bug_when>
    <thetext>Created attachment 410252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693976</commentid>
    <comment_count>12</comment_count>
      <attachid>410252</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-01 20:19:40 -0700</bug_when>
    <thetext>Comment on attachment 410252
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410252&amp;action=review

&gt; Source/WebCore/dom/EventLoop.cpp:71
&gt; +void EventLoop::queueIndexedDBTask(TaskFunction&amp;&amp; function)

I wouldn&apos;t call this IndexedDBTask.
Rather, I&apos;d call this queueWorkAtEndOfCurrentTask or something.

&gt; Source/WebCore/dom/EventLoop.cpp:73
&gt; +    m_indexedDBTaskFunctions.append(WTFMove(function));

It&apos;s possible for a task to be executing outside of EventLoop::run so we&apos;d need to schedule it here.
Just call scheduleToRunIfNeeded

&gt; Source/WebCore/dom/EventLoop.cpp:79
&gt; +    auto functions = std::exchange(m_indexedDBTaskFunctions, { });
&gt; +    for (auto&amp; function : functions)

This isn&apos;t right. Some of these functions may be associated with a page that has gotten into a page cache or otherwise stopped.

&gt; Source/WebCore/dom/EventLoop.cpp:180
&gt; +    m_eventLoop-&gt;queueIndexedDBTask(WTFMove(function));

We need to create EventLoopTask here and associate that task with this group.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706142</commentid>
    <comment_count>13</comment_count>
      <attachid>410252</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-11-10 11:30:20 -0800</bug_when>
    <thetext>Comment on attachment 410252
Patch

Don&apos;t set r- on your own patch. The right thing to do is to remove r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737590</commentid>
    <comment_count>14</comment_count>
      <attachid>422706</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-03-09 08:45:28 -0800</bug_when>
    <thetext>Created attachment 422706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1737809</commentid>
    <comment_count>15</comment_count>
      <attachid>422706</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-09 15:39:10 -0800</bug_when>
    <thetext>Comment on attachment 422706
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422706&amp;action=review

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:101
&gt; +        context-&gt;eventLoop().completeAfterMicrotaskCheckpoint([protectedThis = makeRef(*this)] {

I&apos;d call this runAtEndOfMicrotaskCheckpoint instead.

&gt; Source/WebCore/dom/EventLoop.cpp:189
&gt; +    m_functionsAfterMicrotaskCheckpoint.append(WTFMove(function));
&gt; +    microtaskQueue().addCheckpointListener(makeWeakPtr(this));

I&apos;d preferred if we just had this mapping in EventLoop itself so that we preserve ordering
between functions coming from different groups.
Otherwise, we may inadvertently introduce a race condition depending on
whether this task group had already been scheduled on the event loop or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738110</commentid>
    <comment_count>16</comment_count>
      <attachid>422842</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-03-10 10:20:51 -0800</bug_when>
    <thetext>Created attachment 422842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738235</commentid>
    <comment_count>17</comment_count>
      <attachid>422842</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-10 14:24:07 -0800</bug_when>
    <thetext>Comment on attachment 422842
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=422842&amp;action=review

&gt; LayoutTests/storage/indexeddb/transaction-state-active-after-creation.html:7
&gt; +&lt;script src=&quot;resources/transaction-state-active-after-creation.js&quot;&gt;&lt;/script&gt;

Can we just inline the script? It&apos;s old style of js-test to split the main testing script into a separate file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738371</commentid>
    <comment_count>18</comment_count>
      <attachid>422907</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-03-10 23:57:40 -0800</bug_when>
    <thetext>Created attachment 422907
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738382</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-11 00:41:28 -0800</bug_when>
    <thetext>Committed r274269: &lt;https://commits.webkit.org/r274269&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422907.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1738517</commentid>
    <comment_count>20</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-03-11 10:30:09 -0800</bug_when>
    <thetext>*** Bug 222746 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410245</attachid>
            <date>2020-10-01 11:26:55 -0700</date>
            <delta_ts>2020-10-01 11:42:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216769-20201001112655.patch</filename>
            <type>text/plain</type>
            <size>10587</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQxY2Y3ZjY0NWZmZGM2
MzM0NmJmNTAzOWQwZGQ5YjcxMGE5MDRjZS4uZjZmM2Y0MmI2OTRjODZhMDEzMmYwYjc2YTZhNDI5
MzM4NWI4ZDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTEwLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWQgREIgdHJhbnNh
Y3Rpb25zIG91dGRhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGp1c3QgY3JlYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82OTMyMTA3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
dGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbAorCisgICAgICAgIFNldCB0cmFuc2FjdGlv
biBpbmFjdGl2ZSB3aGVuIGNvbnRyb2wgcmV0dXJucyB0byBldmVudCBsb29wIGFzIHBlciBzcGVj
LiBWTSBiZWluZyBpZGxlIGRvZXMgbm90IG1lYW4gY29udHJvbCAKKyAgICAgICAgcmV0dXJucyB0
byBldmVudCBsb29wLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TG9vcDo6cXVldWVJbmRleGVkREJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6
cGVyZm9ybUluZGV4ZWREQlRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6cnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVJbmRleGVkREJU
YXNrKToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmg6CisKIDIwMjAtMDktMzAgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJ
OiBFbmFibGUgcGVyLXBhZ2Ugc3RvcmFnZSBhY2Nlc3Mgc2NvcGUgYW5kIGFsaWduIHRlc3QgY2Fz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBjNGY0OTRlNDliMDk0ODA5ZmYzYjlhNWJmMjFmN2RhZTUyZTE4NjBjLi42
MzYwMTBiYTg5OTJiZDNhMWY0NjM0N2Q4Mzk1ZjFiNjE5NDQxMDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklE
QkN1cnNvcldpdGhWYWx1ZS5oIgpAQCAtOTYsOSArOTcsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKICAgICAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgICAgIEpTQzo6Vk0mIHZtID0gY29udGV4
dC0+dm0oKTsKLSAgICAgICAgdm0ud2hlbklkbGUoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7CisgICAgICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlSW5kZXhlZERCVGFz
ayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzXSB7CiAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kZWFjdGl2YXRlKCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExvb3AuY3BwCmluZGV4IDFkNzlmZThhZTdlZmFjN2Q5YTlmYzI0NjdmODEwM2U1Y2NkZWM1NGQu
LjY5NGE5YWI5MjFhNzUwZWIyOTFhMjk2YTc1ZjkwMWNmOGEzODlhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudExvb3AuY3BwCkBAIC02Nyw2ICs2NywyMCBAQCB2b2lkIEV2ZW50TG9vcDo6c3RvcEdyb3Vw
KEV2ZW50TG9vcFRhc2tHcm91cCYgZ3JvdXApCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKK3ZvaWQgRXZlbnRMb29wOjpxdWV1ZUluZGV4ZWREQlRhc2soVGFza0Z1
bmN0aW9uJiYgZnVuY3Rpb24pCit7CisgICAgbV9pbmRleGVkREJUYXNrRnVuY3Rpb25zLmFwcGVu
ZChXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpwZXJmb3JtSW5kZXhl
ZERCVGFza3MoKQoreworICAgIGF1dG8gZnVuY3Rpb25zID0gc3RkOjpleGNoYW5nZShtX2luZGV4
ZWREQlRhc2tGdW5jdGlvbnMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0
aW9ucykKKyAgICAgICAgZnVuY3Rpb24oKTsKK30KKyNlbmRpZgorCiB2b2lkIEV2ZW50TG9vcDo6
c2NoZWR1bGVUb1J1bklmTmVlZGVkKCkKIHsKICAgICBpZiAobV9pc1NjaGVkdWxlZFRvUnVuKQpA
QCAtODAsNiArOTQsMTAgQEAgdm9pZCBFdmVudExvb3A6OnJ1bigpCiAgICAgbV9pc1NjaGVkdWxl
ZFRvUnVuID0gZmFsc2U7CiAgICAgYm9vbCBkaWRQZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCA9
IGZhbHNlOwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcGVyZm9ybUluZGV4
ZWREQlRhc2tzKCk7CisjZW5kaWYKKwogICAgIGlmICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAg
ICAgICAgYXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKICAgICAgICAg
bV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVhcigpOwpAQCAtOTYsNiArMTE0LDExIEBAIHZv
aWQgRXZlbnRMb29wOjpydW4oKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0YXNrLT5l
eGVjdXRlKCk7CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICAgICAgICAgIHBl
cmZvcm1JbmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAgICAgICAgIGRpZFBlcmZvcm1N
aWNyb3Rhc2tDaGVja3BvaW50ID0gdHJ1ZTsKICAgICAgICAgICAgIG1pY3JvdGFza1F1ZXVlKCku
cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKICAgICAgICAgfQpAQCAtMTQ5LDYgKzE3Miwx
NSBAQCB2b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVNaWNyb3Rhc2soRXZlbnRMb29wOjpU
YXNrRnVuY3Rpb24mJiBmdW5jdGlvbikKICAgICBtX2V2ZW50TG9vcC0+cXVldWVNaWNyb3Rhc2so
bWFrZVVuaXF1ZTxFdmVudExvb3BGdW5jdGlvbkRpc3BhdGNoVGFzaz4oVGFza1NvdXJjZTo6TWlj
cm90YXNrLCAqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAorI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQordm9pZCBFdmVudExvb3BUYXNrR3JvdXA6OnF1ZXVlSW5kZXhlZERCVGFz
ayhFdmVudExvb3A6OlRhc2tGdW5jdGlvbiYmIGZ1bmN0aW9uKQoreworICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpTdG9wcGVkIHx8ICFtX2V2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fZXZlbnRMb29wLT5xdWV1ZUluZGV4ZWREQlRhc2soV1RGTW92ZShmdW5jdGlvbikpOworfQor
I2VuZGlmCisKIHZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpwZXJmb3JtTWljcm90YXNrQ2hlY2tw
b2ludCgpCiB7CiAgICAgaWYgKG1fZXZlbnRMb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TG9vcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCmluZGV4
IGZiMmMzNDljYmRjYTc1NTgxYzUxNzk2MjViM2NiM2JkZDJhMDRjNGMuLmJkYjFkN2UzMzI0ZDY1
ODM4ZDNlOTQ2ODhkNjFjNzk0YTJiZDBkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKQEAgLTc5
LDYgKzc5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUdyb3VwKEV2ZW50TG9vcFRhc2tH
cm91cCYpOwogICAgIHZvaWQgc3RvcEdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYpOwogCisjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgdm9pZCBxdWV1ZUluZGV4ZWREQlRhc2soVGFz
a0Z1bmN0aW9uJiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFdmVudExvb3AoKSA9IGRl
ZmF1bHQ7CiAgICAgdm9pZCBydW4oKTsKQEAgLTg5LDEwICs5MywxOCBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRvUnVuKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRleHRUaHJlYWQoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KyAgICB2b2lkIHBlcmZvcm1JbmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAvLyBVc2Ug
YSBnbG9iYWwgcXVldWUgaW5zdGVhZCBvZiBtdWx0aXBsZSB0YXNrIHF1ZXVlcyBzaW5jZSBIVE1M
NSBzcGVjIGFsbG93cyBVQSB0byBwaWNrIGFyYml0cmFyeSBxdWV1ZS4KICAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+PiBtX3Rhc2tzOwogICAgIFdlYWtIYXNoU2V0PEV2
ZW50TG9vcFRhc2tHcm91cD4gbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrczsKICAgICBib29sIG1f
aXNTY2hlZHVsZWRUb1J1biB7IGZhbHNlIH07CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKyAgICBWZWN0b3I8VGFza0Z1bmN0aW9uPiBtX2luZGV4ZWREQlRhc2tGdW5jdGlvbnM7Cisj
ZW5kaWYKIH07CiAKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cCA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxFdmVudExvb3BUYXNrR3JvdXA+IHsKQEAgLTE1Myw2ICsxNjUsMTAgQEAgcHVibGljOgog
ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMu
aHRtbCNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKICAgICB2b2lkIHBlcmZvcm1NaWNy
b3Rhc2tDaGVja3BvaW50KCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHF1ZXVlSW5kZXhlZERCVGFzayhFdmVudExvb3A6OlRhc2tGdW5j
dGlvbiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50
OF90IHsgUnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Y2RhNjIwYjk4
ODAzMzAzMDdiN2VkYjg2OGFhNTJhOWU0NDNkZDhkLi41MjFhOGQ2YmNjMmI0MDg0YjU5ZDBkY2Y0
NTM1NWZkYmNiY2UyMjA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTAtMDEgIFNpaHVp
IExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2Fj
dGlvbnMgb3V0ZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0
aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChjb25z
dC5kZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChjb25zdC5vcGVuRGF0YWJhc2UpOgorICAgICAg
ICAoY29uc3QucHJlcGFyZVRyYW5zYWN0aW9uLmFzeW5jIGF3YWl0KToKKyAgICAgICAgKGNvbnN0
LnByZXBhcmVUcmFuc2FjdGlvbik6CisgICAgICAgIChjb25zdC5zbGVlcCk6CisgICAgICAgIChj
b25zdC5hc3luY1Rlc3QuYXN5bmMgYXdhaXQpOgorICAgICAgICAoY29uc3QuYXN5bmNUZXN0KToK
KyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0
ZXItY3JlYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbDogQWRkZWQu
CisKIDIwMjAtMDktMzAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dMSUJdIE1pc3NpbmcgYml0cyBmcm9tIGxhc3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhdGUt
YWN0aXZlLWFmdGVyLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44NmNjMGMyNTQ5MjFmMzdmYjdiYTRkODk1ODJjMWYzMjE0MWVhZmUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5z
YWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qcwpAQCAtMCwwICsxLDczIEBACitp
ZiAodGhpcy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30K
KwordmFyIGRiID0gbnVsbDsKKworY29uc3QgZGVsZXRlRGF0YWJhc2UgPSAoKSA9PiB7CisgICAg
cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgZXZhbEFu
ZExvZygnZGJuYW1lID0gInRyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbiIn
KTsKKyAgICAgICAgbGV0IGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9nKCdpbmRleGVkREIuZGVs
ZXRlRGF0YWJhc2UoZGJuYW1lKScpOworICAgICAgICBkZWxldGVSZXF1ZXN0Lm9uc3VjY2VzcyA9
ICgpID0+IHJlc29sdmUoKTsKKyAgICAgICAgZGVsZXRlUmVxdWVzdC5vbmVycm9yID0gKCkgPT4g
cmVqZWN0KCk7CisgICAgfSk7Cit9CisKK2NvbnN0IG9wZW5EYXRhYmFzZSA9ICgpID0+IHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZiAo
ZGIpIHsKKyAgICAgICAgICAgIGRlYnVnKCdkYXRhYmFzZSBleGlzdHMnKTsKKyAgICAgICAgICAg
IHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxldCBvcGVuUmVxdWVz
dCA9IGV2YWxBbmRMb2coJ2luZGV4ZWREQi5vcGVuKGRibmFtZSknKTsKKyAgICAgICAgICAgIG9w
ZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAg
IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnc3RvcmUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9wZW5SZXF1ZXN0
Lm9uc3VjY2VzcyA9ICAoKSA9PiByZXNvbHZlKCk7CisgICAgICAgICAgICBvcGVuUmVxdWVzdC5v
bmVycm9yID0gKCkgPT4gcmVqZWN0KCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworY29uc3Qg
cHJlcGFyZVRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4geworICAgIGF3YWl0IG9wZW5EYXRhYmFz
ZSgpOworICAgIGV2YWxBbmRMb2coJ3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInN0b3Jl
IiwgInJlYWR3cml0ZSIpJyk7Cit9CisKK2NvbnN0IHB1dFJlY29yZCA9IChrZXkpID0+IHsKKyAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB0cnkg
eworICAgICAgICAgICAgcHV0UmVxdWVzdCA9IGV2YWxBbmRMb2coJ3RyYW5zYWN0aW9uLm9iamVj
dFN0b3JlKCJzdG9yZSIpLnB1dCgidmFsdWUiLCAia2V5IiknKTsKKyAgICAgICAgICAgIHB1dFJl
cXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpOworICAgICAgICAgICAgcHV0UmVxdWVz
dC5vbmVycm9yID0gKGV2ZW50KSA9PiByZWplY3QoZXZlbnQpOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitjb25z
dCBzbGVlcCA9IChtcykgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
c2V0VGltZW91dChyZXNvbHZlLCBtcykpOworfQorCitjb25zdCBhc3luY1Rlc3QgPSBhc3luYygp
ID0+IHsKKyAgICBhd2FpdCBkZWxldGVEYXRhYmFzZSgpOworCisgICAgYXdhaXQgcHJlcGFyZVRy
YW5zYWN0aW9uKCk7CisgICAgYXdhaXQgcHV0UmVjb3JkKCk7CisKKyAgICBkZWJ1Zygnc2xlZXAg
MTAwbXMnKTsKKyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAgYXdhaXQgcHJlcGFyZVRyYW5z
YWN0aW9uKCk7CisgICAgcHV0UmVjb3JkKCkKKyAgICAudGhlbigoKSA9PiBmaW5pc2hKU1Rlc3Qo
KSkKKyAgICAuY2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoJ0ZhaWxlZCB0
byBwdXQgcmVjb3JkJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworfQorCith
c3luY1Rlc3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXIt
Y3JlYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NWViNWNiYWUzNzZmZGZjYzViNWNj
MWQ4N2FkMWNkNzNhY2M5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1zdGF0ZS1hY3Rp
dmUtYWZ0ZXItY3JlYXRpb24iCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5k
ZXhlZERCLm9wZW4oZGJuYW1lKQordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigic3RvcmUi
LCAicmVhZHdyaXRlIikKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZSIpLnB1dCgidmFs
dWUiLCAia2V5IikKK3NsZWVwIDEwMG1zCitkYXRhYmFzZSBleGlzdHMKK3RyYW5zYWN0aW9uID0g
ZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpCit0cmFuc2FjdGlvbi5vYmplY3RT
dG9yZSgic3RvcmUiKS5wdXQoInZhbHVlIiwgImtleSIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0
bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3Rp
dmUtYWZ0ZXItY3JlYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzVjYzMyNjUwN2Q5YWE2MjM3ZTVi
MDE5NmM2YzhmMDliMWQzMzdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0bWwK
QEAgLTAsMCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVk
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90
cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="426146"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410249</attachid>
            <date>2020-10-01 11:41:29 -0700</date>
            <delta_ts>2020-10-01 11:47:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216769-20201001114128.patch</filename>
            <type>text/plain</type>
            <size>6706</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQxY2Y3ZjY0NWZmZGM2
MzM0NmJmNTAzOWQwZGQ5YjcxMGE5MDRjZS4uZjZmM2Y0MmI2OTRjODZhMDEzMmYwYjc2YTZhNDI5
MzM4NWI4ZDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTEwLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWQgREIgdHJhbnNh
Y3Rpb25zIG91dGRhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGp1c3QgY3JlYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82OTMyMTA3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
dGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbAorCisgICAgICAgIFNldCB0cmFuc2FjdGlv
biBpbmFjdGl2ZSB3aGVuIGNvbnRyb2wgcmV0dXJucyB0byBldmVudCBsb29wIGFzIHBlciBzcGVj
LiBWTSBiZWluZyBpZGxlIGRvZXMgbm90IG1lYW4gY29udHJvbCAKKyAgICAgICAgcmV0dXJucyB0
byBldmVudCBsb29wLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TG9vcDo6cXVldWVJbmRleGVkREJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6
cGVyZm9ybUluZGV4ZWREQlRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6cnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVJbmRleGVkREJU
YXNrKToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmg6CisKIDIwMjAtMDktMzAgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJ
OiBFbmFibGUgcGVyLXBhZ2Ugc3RvcmFnZSBhY2Nlc3Mgc2NvcGUgYW5kIGFsaWduIHRlc3QgY2Fz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBjNGY0OTRlNDliMDk0ODA5ZmYzYjlhNWJmMjFmN2RhZTUyZTE4NjBjLi5m
ZWZhZDM5Nzc5YTE4MTU1YzgwZDc5YmQ4NDEyOWZlOTc0OTUxMWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklE
QkN1cnNvcldpdGhWYWx1ZS5oIgpAQCAtOTYsOSArOTcsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKICAgICAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgICAgIEpTQzo6Vk0mIHZtID0gY29udGV4
dC0+dm0oKTsKLSAgICAgICAgdm0ud2hlbklkbGUoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7CisgICAgICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlSW5kZXhlZERCVGFz
ayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kZWFjdGl2YXRlKCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3Au
Y3BwCmluZGV4IDFkNzlmZThhZTdlZmFjN2Q5YTlmYzI0NjdmODEwM2U1Y2NkZWM1NGQuLjY5NGE5
YWI5MjFhNzUwZWIyOTFhMjk2YTc1ZjkwMWNmOGEzODlhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExv
b3AuY3BwCkBAIC02Nyw2ICs2NywyMCBAQCB2b2lkIEV2ZW50TG9vcDo6c3RvcEdyb3VwKEV2ZW50
TG9vcFRhc2tHcm91cCYgZ3JvdXApCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKK3ZvaWQgRXZlbnRMb29wOjpxdWV1ZUluZGV4ZWREQlRhc2soVGFza0Z1bmN0aW9u
JiYgZnVuY3Rpb24pCit7CisgICAgbV9pbmRleGVkREJUYXNrRnVuY3Rpb25zLmFwcGVuZChXVEZN
b3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpwZXJmb3JtSW5kZXhlZERCVGFz
a3MoKQoreworICAgIGF1dG8gZnVuY3Rpb25zID0gc3RkOjpleGNoYW5nZShtX2luZGV4ZWREQlRh
c2tGdW5jdGlvbnMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykK
KyAgICAgICAgZnVuY3Rpb24oKTsKK30KKyNlbmRpZgorCiB2b2lkIEV2ZW50TG9vcDo6c2NoZWR1
bGVUb1J1bklmTmVlZGVkKCkKIHsKICAgICBpZiAobV9pc1NjaGVkdWxlZFRvUnVuKQpAQCAtODAs
NiArOTQsMTAgQEAgdm9pZCBFdmVudExvb3A6OnJ1bigpCiAgICAgbV9pc1NjaGVkdWxlZFRvUnVu
ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRQZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCA9IGZhbHNl
OwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcGVyZm9ybUluZGV4ZWREQlRh
c2tzKCk7CisjZW5kaWYKKwogICAgIGlmICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKICAgICAgICAgbV9ncm91
cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVhcigpOwpAQCAtOTYsNiArMTE0LDExIEBAIHZvaWQgRXZl
bnRMb29wOjpydW4oKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0YXNrLT5leGVjdXRl
KCk7CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICAgICAgICAgIHBlcmZvcm1J
bmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAgICAgICAgIGRpZFBlcmZvcm1NaWNyb3Rh
c2tDaGVja3BvaW50ID0gdHJ1ZTsKICAgICAgICAgICAgIG1pY3JvdGFza1F1ZXVlKCkucGVyZm9y
bU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKICAgICAgICAgfQpAQCAtMTQ5LDYgKzE3MiwxNSBAQCB2
b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVNaWNyb3Rhc2soRXZlbnRMb29wOjpUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKICAgICBtX2V2ZW50TG9vcC0+cXVldWVNaWNyb3Rhc2sobWFrZVVu
aXF1ZTxFdmVudExvb3BGdW5jdGlvbkRpc3BhdGNoVGFzaz4oVGFza1NvdXJjZTo6TWljcm90YXNr
LCAqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQordm9pZCBFdmVudExvb3BUYXNrR3JvdXA6OnF1ZXVlSW5kZXhlZERCVGFzayhFdmVu
dExvb3A6OlRhc2tGdW5jdGlvbiYmIGZ1bmN0aW9uKQoreworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpTdG9wcGVkIHx8ICFtX2V2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZXZl
bnRMb29wLT5xdWV1ZUluZGV4ZWREQlRhc2soV1RGTW92ZShmdW5jdGlvbikpOworfQorI2VuZGlm
CisKIHZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgp
CiB7CiAgICAgaWYgKG1fZXZlbnRMb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TG9vcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCmluZGV4IGZiMmMz
NDljYmRjYTc1NTgxYzUxNzk2MjViM2NiM2JkZDJhMDRjNGMuLmJkYjFkN2UzMzI0ZDY1ODM4ZDNl
OTQ2ODhkNjFjNzk0YTJiZDBkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKQEAgLTc5LDYgKzc5
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYp
OwogICAgIHZvaWQgc3RvcEdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYpOwogCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisgICAgdm9pZCBxdWV1ZUluZGV4ZWREQlRhc2soVGFza0Z1bmN0
aW9uJiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFdmVudExvb3AoKSA9IGRlZmF1bHQ7
CiAgICAgdm9pZCBydW4oKTsKQEAgLTg5LDEwICs5MywxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZVRvUnVuKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRU
aHJlYWQoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICB2
b2lkIHBlcmZvcm1JbmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAvLyBVc2UgYSBnbG9i
YWwgcXVldWUgaW5zdGVhZCBvZiBtdWx0aXBsZSB0YXNrIHF1ZXVlcyBzaW5jZSBIVE1MNSBzcGVj
IGFsbG93cyBVQSB0byBwaWNrIGFyYml0cmFyeSBxdWV1ZS4KICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEV2ZW50TG9vcFRhc2s+PiBtX3Rhc2tzOwogICAgIFdlYWtIYXNoU2V0PEV2ZW50TG9v
cFRhc2tHcm91cD4gbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrczsKICAgICBib29sIG1faXNTY2hl
ZHVsZWRUb1J1biB7IGZhbHNlIH07CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAg
ICBWZWN0b3I8VGFza0Z1bmN0aW9uPiBtX2luZGV4ZWREQlRhc2tGdW5jdGlvbnM7CisjZW5kaWYK
IH07CiAKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxF
dmVudExvb3BUYXNrR3JvdXA+IHsKQEAgLTE1Myw2ICsxNjUsMTAgQEAgcHVibGljOgogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNw
ZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKICAgICB2b2lkIHBlcmZvcm1NaWNyb3Rhc2tD
aGVja3BvaW50KCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHF1ZXVlSW5kZXhlZERCVGFzayhFdmVudExvb3A6OlRhc2tGdW5jdGlvbiYm
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsg
UnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Y2RhNjIwYjk4ODAzMzAz
MDdiN2VkYjg2OGFhNTJhOWU0NDNkZDhkLi41MjFhOGQ2YmNjMmI0MDg0YjU5ZDBkY2Y0NTM1NWZk
YmNiY2UyMjA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTAtMDEgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2FjdGlvbnMg
b3V0ZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0
YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5kZWxl
dGVEYXRhYmFzZSk6CisgICAgICAgIChjb25zdC5vcGVuRGF0YWJhc2UpOgorICAgICAgICAoY29u
c3QucHJlcGFyZVRyYW5zYWN0aW9uLmFzeW5jIGF3YWl0KToKKyAgICAgICAgKGNvbnN0LnByZXBh
cmVUcmFuc2FjdGlvbik6CisgICAgICAgIChjb25zdC5zbGVlcCk6CisgICAgICAgIChjb25zdC5h
c3luY1Rlc3QuYXN5bmMgYXdhaXQpOgorICAgICAgICAoY29uc3QuYXN5bmNUZXN0KToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3Jl
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbDogQWRkZWQuCisKIDIw
MjAtMDktMzAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dM
SUJdIE1pc3NpbmcgYml0cyBmcm9tIGxhc3QgZ2FyZGVuaW5nCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410252</attachid>
            <date>2020-10-01 11:47:47 -0700</date>
            <delta_ts>2021-03-09 08:45:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216769-20201001114746.patch</filename>
            <type>text/plain</type>
            <size>10581</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQxY2Y3ZjY0NWZmZGM2
MzM0NmJmNTAzOWQwZGQ5YjcxMGE5MDRjZS4uZjZmM2Y0MmI2OTRjODZhMDEzMmYwYjc2YTZhNDI5
MzM4NWI4ZDgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTEwLTAxICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWQgREIgdHJhbnNh
Y3Rpb25zIG91dGRhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGp1c3QgY3JlYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82OTMyMTA3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
dGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbAorCisgICAgICAgIFNldCB0cmFuc2FjdGlv
biBpbmFjdGl2ZSB3aGVuIGNvbnRyb2wgcmV0dXJucyB0byBldmVudCBsb29wIGFzIHBlciBzcGVj
LiBWTSBiZWluZyBpZGxlIGRvZXMgbm90IG1lYW4gY29udHJvbCAKKyAgICAgICAgcmV0dXJucyB0
byBldmVudCBsb29wLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
TG9vcDo6cXVldWVJbmRleGVkREJUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6
cGVyZm9ybUluZGV4ZWREQlRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcDo6cnVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVJbmRleGVkREJU
YXNrKToKKyAgICAgICAgKiBkb20vRXZlbnRMb29wLmg6CisKIDIwMjAtMDktMzAgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJ
OiBFbmFibGUgcGVyLXBhZ2Ugc3RvcmFnZSBhY2Nlc3Mgc2NvcGUgYW5kIGFsaWduIHRlc3QgY2Fz
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBjNGY0OTRlNDliMDk0ODA5ZmYzYjlhNWJmMjFmN2RhZTUyZTE4NjBjLi5m
ZWZhZDM5Nzc5YTE4MTU1YzgwZDc5YmQ4NDEyOWZlOTc0OTUxMWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNp
bmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIklE
QkN1cnNvcldpdGhWYWx1ZS5oIgpAQCAtOTYsOSArOTcsNyBAQCBJREJUcmFuc2FjdGlvbjo6SURC
VHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlvbklu
Zm8mCiAKICAgICAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
ICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotCi0gICAgICAgIEpTQzo6Vk0mIHZtID0gY29udGV4
dC0+dm0oKTsKLSAgICAgICAgdm0ud2hlbklkbGUoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKV0oKSB7CisgICAgICAgIGNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlSW5kZXhlZERCVGFz
ayhbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kZWFjdGl2YXRlKCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRMb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3Au
Y3BwCmluZGV4IDFkNzlmZThhZTdlZmFjN2Q5YTlmYzI0NjdmODEwM2U1Y2NkZWM1NGQuLjY5NGE5
YWI5MjFhNzUwZWIyOTFhMjk2YTc1ZjkwMWNmOGEzODlhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExv
b3AuY3BwCkBAIC02Nyw2ICs2NywyMCBAQCB2b2lkIEV2ZW50TG9vcDo6c3RvcEdyb3VwKEV2ZW50
TG9vcFRhc2tHcm91cCYgZ3JvdXApCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKK3ZvaWQgRXZlbnRMb29wOjpxdWV1ZUluZGV4ZWREQlRhc2soVGFza0Z1bmN0aW9u
JiYgZnVuY3Rpb24pCit7CisgICAgbV9pbmRleGVkREJUYXNrRnVuY3Rpb25zLmFwcGVuZChXVEZN
b3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgRXZlbnRMb29wOjpwZXJmb3JtSW5kZXhlZERCVGFz
a3MoKQoreworICAgIGF1dG8gZnVuY3Rpb25zID0gc3RkOjpleGNoYW5nZShtX2luZGV4ZWREQlRh
c2tGdW5jdGlvbnMsIHsgfSk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykK
KyAgICAgICAgZnVuY3Rpb24oKTsKK30KKyNlbmRpZgorCiB2b2lkIEV2ZW50TG9vcDo6c2NoZWR1
bGVUb1J1bklmTmVlZGVkKCkKIHsKICAgICBpZiAobV9pc1NjaGVkdWxlZFRvUnVuKQpAQCAtODAs
NiArOTQsMTAgQEAgdm9pZCBFdmVudExvb3A6OnJ1bigpCiAgICAgbV9pc1NjaGVkdWxlZFRvUnVu
ID0gZmFsc2U7CiAgICAgYm9vbCBkaWRQZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCA9IGZhbHNl
OwogCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgcGVyZm9ybUluZGV4ZWREQlRh
c2tzKCk7CisjZW5kaWYKKwogICAgIGlmICghbV90YXNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXV0byB0YXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV90YXNrcywgeyB9KTsKICAgICAgICAgbV9ncm91
cHNXaXRoU3VzcGVuZWRUYXNrcy5jbGVhcigpOwpAQCAtOTYsNiArMTE0LDExIEBAIHZvaWQgRXZl
bnRMb29wOjpydW4oKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0YXNrLT5leGVjdXRl
KCk7CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICAgICAgICAgIHBlcmZvcm1J
bmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAgICAgICAgIGRpZFBlcmZvcm1NaWNyb3Rh
c2tDaGVja3BvaW50ID0gdHJ1ZTsKICAgICAgICAgICAgIG1pY3JvdGFza1F1ZXVlKCkucGVyZm9y
bU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKICAgICAgICAgfQpAQCAtMTQ5LDYgKzE3MiwxNSBAQCB2
b2lkIEV2ZW50TG9vcFRhc2tHcm91cDo6cXVldWVNaWNyb3Rhc2soRXZlbnRMb29wOjpUYXNrRnVu
Y3Rpb24mJiBmdW5jdGlvbikKICAgICBtX2V2ZW50TG9vcC0+cXVldWVNaWNyb3Rhc2sobWFrZVVu
aXF1ZTxFdmVudExvb3BGdW5jdGlvbkRpc3BhdGNoVGFzaz4oVGFza1NvdXJjZTo6TWljcm90YXNr
LCAqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKIH0KIAorI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQordm9pZCBFdmVudExvb3BUYXNrR3JvdXA6OnF1ZXVlSW5kZXhlZERCVGFzayhFdmVu
dExvb3A6OlRhc2tGdW5jdGlvbiYmIGZ1bmN0aW9uKQoreworICAgIGlmIChtX3N0YXRlID09IFN0
YXRlOjpTdG9wcGVkIHx8ICFtX2V2ZW50TG9vcCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZXZl
bnRMb29wLT5xdWV1ZUluZGV4ZWREQlRhc2soV1RGTW92ZShmdW5jdGlvbikpOworfQorI2VuZGlm
CisKIHZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgp
CiB7CiAgICAgaWYgKG1fZXZlbnRMb29wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TG9vcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCmluZGV4IGZiMmMz
NDljYmRjYTc1NTgxYzUxNzk2MjViM2NiM2JkZDJhMDRjNGMuLmJkYjFkN2UzMzI0ZDY1ODM4ZDNl
OTQ2ODhkNjFjNzk0YTJiZDBkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKQEAgLTc5LDYgKzc5
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYp
OwogICAgIHZvaWQgc3RvcEdyb3VwKEV2ZW50TG9vcFRhc2tHcm91cCYpOwogCisjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCisgICAgdm9pZCBxdWV1ZUluZGV4ZWREQlRhc2soVGFza0Z1bmN0
aW9uJiYpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFdmVudExvb3AoKSA9IGRlZmF1bHQ7
CiAgICAgdm9pZCBydW4oKTsKQEAgLTg5LDEwICs5MywxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzY2hlZHVsZVRvUnVuKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRU
aHJlYWQoKSBjb25zdCA9IDA7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICB2
b2lkIHBlcmZvcm1JbmRleGVkREJUYXNrcygpOworI2VuZGlmCisKICAgICAvLyBVc2UgYSBnbG9i
YWwgcXVldWUgaW5zdGVhZCBvZiBtdWx0aXBsZSB0YXNrIHF1ZXVlcyBzaW5jZSBIVE1MNSBzcGVj
IGFsbG93cyBVQSB0byBwaWNrIGFyYml0cmFyeSBxdWV1ZS4KICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEV2ZW50TG9vcFRhc2s+PiBtX3Rhc2tzOwogICAgIFdlYWtIYXNoU2V0PEV2ZW50TG9v
cFRhc2tHcm91cD4gbV9ncm91cHNXaXRoU3VzcGVuZWRUYXNrczsKICAgICBib29sIG1faXNTY2hl
ZHVsZWRUb1J1biB7IGZhbHNlIH07CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAg
ICBWZWN0b3I8VGFza0Z1bmN0aW9uPiBtX2luZGV4ZWREQlRhc2tGdW5jdGlvbnM7CisjZW5kaWYK
IH07CiAKIGNsYXNzIEV2ZW50TG9vcFRhc2tHcm91cCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxF
dmVudExvb3BUYXNrR3JvdXA+IHsKQEAgLTE1Myw2ICsxNjUsMTAgQEAgcHVibGljOgogICAgIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNw
ZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKICAgICB2b2lkIHBlcmZvcm1NaWNyb3Rhc2tD
aGVja3BvaW50KCk7CiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHF1ZXVlSW5kZXhlZERCVGFzayhFdmVudExvb3A6OlRhc2tGdW5jdGlvbiYm
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsg
UnVubmluZywgU3VzcGVuZGVkLCBTdG9wcGVkIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3Y2RhNjIwYjk4ODAzMzAz
MDdiN2VkYjg2OGFhNTJhOWU0NDNkZDhkLi41MjFhOGQ2YmNjMmI0MDg0YjU5ZDBkY2Y0NTM1NWZk
YmNiY2UyMjA2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAtMTAtMDEgIFNpaHVpIExpdSAg
PHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2FjdGlvbnMg
b3V0ZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0
YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5kZWxl
dGVEYXRhYmFzZSk6CisgICAgICAgIChjb25zdC5vcGVuRGF0YWJhc2UpOgorICAgICAgICAoY29u
c3QucHJlcGFyZVRyYW5zYWN0aW9uLmFzeW5jIGF3YWl0KToKKyAgICAgICAgKGNvbnN0LnByZXBh
cmVUcmFuc2FjdGlvbik6CisgICAgICAgIChjb25zdC5zbGVlcCk6CisgICAgICAgIChjb25zdC5h
c3luY1Rlc3QuYXN5bmMgYXdhaXQpOgorICAgICAgICAoY29uc3QuYXN5bmNUZXN0KToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3Jl
YXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90
cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbDogQWRkZWQuCisKIDIw
MjAtMDktMzAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dM
SUJdIE1pc3NpbmcgYml0cyBmcm9tIGxhc3QgZ2FyZGVuaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZl
LWFmdGVyLWNyZWF0aW9uLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3Vy
Y2VzL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmNjMGMyNTQ5MjFmMzdmYjdiYTRkODk1ODJjMWYzMjE0MWVhZmUxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9u
LXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qcwpAQCAtMCwwICsxLDczIEBACitpZiAodGhp
cy5pbXBvcnRTY3JpcHRzKSB7CisgICAgaW1wb3J0U2NyaXB0cygnLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMnKTsKKyAgICBpbXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKK30KKwordmFy
IGRiID0gbnVsbDsKKworY29uc3QgZGVsZXRlRGF0YWJhc2UgPSAoKSA9PiB7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgZXZhbEFuZExvZygn
ZGJuYW1lID0gInRyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbiInKTsKKyAg
ICAgICAgbGV0IGRlbGV0ZVJlcXVlc3QgPSBldmFsQW5kTG9nKCdpbmRleGVkREIuZGVsZXRlRGF0
YWJhc2UoZGJuYW1lKScpOworICAgICAgICBkZWxldGVSZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+
IHJlc29sdmUoKTsKKyAgICAgICAgZGVsZXRlUmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0
KCk7CisgICAgfSk7Cit9CisKK2NvbnN0IG9wZW5EYXRhYmFzZSA9ICgpID0+IHsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBpZiAoZGIpIHsK
KyAgICAgICAgICAgIGRlYnVnKCdkYXRhYmFzZSBleGlzdHMnKTsKKyAgICAgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxldCBvcGVuUmVxdWVzdCA9IGV2
YWxBbmRMb2coJ2luZGV4ZWREQi5vcGVuKGRibmFtZSknKTsKKyAgICAgICAgICAgIG9wZW5SZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGRiID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9y
ZSgnc3RvcmUnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9wZW5SZXF1ZXN0Lm9uc3Vj
Y2VzcyA9ICAoKSA9PiByZXNvbHZlKCk7CisgICAgICAgICAgICBvcGVuUmVxdWVzdC5vbmVycm9y
ID0gKCkgPT4gcmVqZWN0KCk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKworY29uc3QgcHJlcGFy
ZVRyYW5zYWN0aW9uID0gYXN5bmMgKCkgPT4geworICAgIGF3YWl0IG9wZW5EYXRhYmFzZSgpOwor
ICAgIGV2YWxBbmRMb2coJ3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJl
YWR3cml0ZSIpJyk7Cit9CisKK2NvbnN0IHB1dFJlY29yZCA9IChrZXkpID0+IHsKKyAgICByZXR1
cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB0cnkgeworICAg
ICAgICAgICAgcHV0UmVxdWVzdCA9IGV2YWxBbmRMb2coJ3RyYW5zYWN0aW9uLm9iamVjdFN0b3Jl
KCJzdG9yZSIpLnB1dCgidmFsdWUiLCAia2V5IiknKTsKKyAgICAgICAgICAgIHB1dFJlcXVlc3Qu
b25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpOworICAgICAgICAgICAgcHV0UmVxdWVzdC5vbmVy
cm9yID0gKGV2ZW50KSA9PiByZWplY3QoZXZlbnQpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIHJlamVjdChlKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCitjb25zdCBzbGVl
cCA9IChtcykgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGlt
ZW91dChyZXNvbHZlLCBtcykpOworfQorCitjb25zdCBhc3luY1Rlc3QgPSBhc3luYygpID0+IHsK
KyAgICBhd2FpdCBkZWxldGVEYXRhYmFzZSgpOworCisgICAgYXdhaXQgcHJlcGFyZVRyYW5zYWN0
aW9uKCk7CisgICAgYXdhaXQgcHV0UmVjb3JkKCk7CisKKyAgICBkZWJ1Zygnc2xlZXAgMTAwbXMn
KTsKKyAgICBhd2FpdCBzbGVlcCgxMDApOworCisgICAgYXdhaXQgcHJlcGFyZVRyYW5zYWN0aW9u
KCk7CisgICAgcHV0UmVjb3JkKCkKKyAgICAudGhlbigoKSA9PiBmaW5pc2hKU1Rlc3QoKSkKKyAg
ICAuY2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgIHRlc3RGYWlsZWQoJ0ZhaWxlZCB0byBwdXQg
cmVjb3JkJyk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOworfQorCithc3luY1Rl
c3QoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRp
b24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NWViNWNiYWUzNzZmZGZjYzViNWNjMWQ4N2Fk
MWNkNzNhY2M5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0
ZXItY3JlYXRpb24iCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKQoraW5kZXhlZERC
Lm9wZW4oZGJuYW1lKQordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVh
ZHdyaXRlIikKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZSIpLnB1dCgidmFsdWUiLCAi
a2V5IikKK3NsZWVwIDEwMG1zCitkYXRhYmFzZSBleGlzdHMKK3RyYW5zYWN0aW9uID0gZGIudHJh
bnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgi
c3RvcmUiKS5wdXQoInZhbHVlIiwgImtleSIpCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9p
bmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0
ZXItY3JlYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzVjYzMyNjUwN2Q5YWE2MjM3ZTViMDE5NmM2
YzhmMDliMWQzMzdiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0bWwKQEAgLTAs
MCArMSw5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2Fj
dGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422706</attachid>
            <date>2021-03-09 08:45:28 -0800</date>
            <delta_ts>2021-03-10 10:20:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216769-20210309084527.patch</filename>
            <type>text/plain</type>
            <size>11332</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ1OWU2Yjc0NjE4YzJk
NjBjOTMxOWMxNGIxODhiNTEwYzliZTI3ZS4uNWQ4Mjk2YjllZjFlMGUwZjM0ZTk3ZmVhMjQ0MjM1
ZmZjNzYxMWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAzLTA5ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2Fj
dGlvbnMgb3V0ZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3Q6IHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0
YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5odG1sCisKKyAgICAgICAgU2V0IHRyYW5zYWN0aW9u
IGluYWN0aXZlIGluIG1pY3JvdGFzayBjaGVja3BvaW50IGFjY29yZGluZyB0byBzcGVjIHNwZWM6
CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3BlcmZvcm0tYS1taWNyb3Rh
c2stY2hlY2twb2ludAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9u
KTogVk0gYmVpbmcgaWRsZSBkb2VzIG5vdCBtZWFuIGNvbnRyb2wgcmV0dXJucyB0byBldmVudCBs
b29wLgorICAgICAgICAqIGRvbS9FdmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRMb29wVGFza0dyb3VwOjpjb21wbGV0ZUFmdGVyTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudExvb3BUYXNrR3JvdXA6Om1pY3JvdGFza0NoZWNrcG9pbnRDb21w
bGV0ZWQpOgorICAgICAgICAqIGRvbS9FdmVudExvb3AuaDoKKyAgICAgICAgKiBkb20vTWljcm90
YXNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6cGVyZm9ybU1pY3Jv
dGFza0NoZWNrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWljcm90YXNrUXVldWU6OmFkZENo
ZWNrcG9pbnRMaXN0ZW5lcik6CisgICAgICAgICogZG9tL01pY3JvdGFza3MuaDoKKwogMjAyMS0w
My0wOCAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB1
bmlmaWVkIGJ1aWxkIGR1ZSB0byBtaXNzaW5nIGhlYWRlciBpbmNsdWRlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGQ4
NjNmMmM0ZjYyNWU1ZTA4ZWYzYjg4YmFlZmZjNzg3YzE2NDlkNjEuLjMwMTQ3YzNjNzM3NDdlNTBk
ZTFiOGU5YjZmNWUzZTk3YzUwNTliMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50RGlz
cGF0Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKICNpbmNsdWRlICJFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yV2l0aFZhbHVl
LmgiCkBAIC05Nyw4ICs5OCw3IEBAIElEQlRyYW5zYWN0aW9uOjpJREJUcmFuc2FjdGlvbihJREJE
YXRhYmFzZSYgZGF0YWJhc2UsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYKICAgICAgICAgYXV0
byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAgICAgQVNTRVJUKGNv
bnRleHQpOwogCi0gICAgICAgIEpTQzo6Vk0mIHZtID0gY29udGV4dC0+dm0oKTsKLSAgICAgICAg
dm0ud2hlbklkbGUoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSB7CisgICAgICAg
IGNvbnRleHQtPmV2ZW50TG9vcCgpLmNvbXBsZXRlQWZ0ZXJNaWNyb3Rhc2tDaGVja3BvaW50KFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRlYWN0aXZhdGUoKTsKICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudExvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5jcHAK
aW5kZXggZTdkZWE4ODc3NzIyNmRlNGI3NTM1NzM3MzU4YzY0MmI1NmZkMjZlMi4uNmU2ZjZmYzZj
MDNmYTA5YjE5OWFkNDg2MmFkNTBhODFlZjcwMWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5j
cHAKQEAgLTE4MCw0ICsxODAsMjAgQEAgdm9pZCBFdmVudExvb3BUYXNrR3JvdXA6OnBlcmZvcm1N
aWNyb3Rhc2tDaGVja3BvaW50KCkKICAgICAgICAgbV9ldmVudExvb3AtPnBlcmZvcm1NaWNyb3Rh
c2tDaGVja3BvaW50KCk7CiB9CiAKK3ZvaWQgRXZlbnRMb29wVGFza0dyb3VwOjpjb21wbGV0ZUFm
dGVyTWljcm90YXNrQ2hlY2twb2ludChFdmVudExvb3A6OlRhc2tGdW5jdGlvbiYmIGZ1bmN0aW9u
KQoreworICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTdG9wcGVkIHx8ICFtX2V2ZW50TG9vcCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdW5jdGlvbnNBZnRlck1pY3JvdGFza0NoZWNrcG9p
bnQuYXBwZW5kKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICBtaWNyb3Rhc2tRdWV1ZSgpLmFkZENo
ZWNrcG9pbnRMaXN0ZW5lcihtYWtlV2Vha1B0cih0aGlzKSk7Cit9CisKK3ZvaWQgRXZlbnRMb29w
VGFza0dyb3VwOjptaWNyb3Rhc2tDaGVja3BvaW50Q29tcGxldGVkKCkKK3sKKyAgICBhdXRvIGZ1
bmN0aW9ucyA9IHN0ZDo6ZXhjaGFuZ2UobV9mdW5jdGlvbnNBZnRlck1pY3JvdGFza0NoZWNrcG9p
bnQsIHsgfSk7CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKKyAgICAgICAg
ZnVuY3Rpb24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9v
cC5oCmluZGV4IGI2MTgzMDcxZDlhMjNiZGRjZWRiZDM3YzVjM2ZhMjIwMjFhZjMxMDUuLmRlYjNh
ZTllZjQxMmUwNDllZTAxN2ViY2RlNWRjZmE0ZmVkMzM2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudExvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29w
LmgKQEAgLTE4MiwxMSArMTgyLDE2IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL2h0bWwuc3Bl
Yy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjcGVyZm9ybS1hLW1pY3JvdGFz
ay1jaGVja3BvaW50CiAgICAgdm9pZCBwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOwogCisg
ICAgdm9pZCBjb21wbGV0ZUFmdGVyTWljcm90YXNrQ2hlY2twb2ludChFdmVudExvb3A6OlRhc2tG
dW5jdGlvbiYmKTsKKyAgICB2b2lkIG1pY3JvdGFza0NoZWNrcG9pbnRDb21wbGV0ZWQoKTsKKwog
cHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7IFJ1bm5pbmcsIFN1c3Bl
bmRlZCwgUmVhZHlUb1N0b3AsIFN0b3BwZWQgfTsKIAogICAgIFdlYWtQdHI8RXZlbnRMb29wPiBt
X2V2ZW50TG9vcDsKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJ1bm5pbmcgfTsKKworICAg
IFZlY3RvcjxFdmVudExvb3A6OlRhc2tGdW5jdGlvbj4gbV9mdW5jdGlvbnNBZnRlck1pY3JvdGFz
a0NoZWNrcG9pbnQ7CiB9OwogCiBpbmxpbmUgRXZlbnRMb29wVGFzazo6RXZlbnRMb29wVGFzayhU
YXNrU291cmNlIHNvdXJjZSwgRXZlbnRMb29wVGFza0dyb3VwJiBncm91cCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
aWNyb3Rhc2tzLmNwcAppbmRleCAyZTRhYTRiNTZjMTA0OGFkNDQwOTQwMzgxMmI5ODJjZWNjODY3
ZTMwLi5jN2IyZTM5MzI0NzA3NjU3MGNiOTZhZWY0YmM0NmE4ZDVmYzg5Y2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01pY3JvdGFza3MuY3BwCkBAIC02Nyw2ICs2NywyNyBAQCB2b2lkIE1pY3JvdGFza1F1ZXVl
OjpwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpCiAKICAgICB2bSgpLmZpbmFsaXplU3luY2hy
b25vdXNKU0V4ZWN1dGlvbigpOwogICAgIG1fbWljcm90YXNrUXVldWUgPSBXVEZNb3ZlKHRvS2Vl
cCk7CisKKyAgICBhdXRvIGNoZWNrcG9pbnRMaXN0ZW5lcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fY2hl
Y2twb2ludExpc3RlbmVycywgeyB9KTsKKyAgICBmb3IgKGF1dG8gY2hlY2twb2ludExpc3RlbmVy
IDogY2hlY2twb2ludExpc3RlbmVycykgeworICAgICAgICBpZiAoIWNoZWNrcG9pbnRMaXN0ZW5l
ciB8fCBjaGVja3BvaW50TGlzdGVuZXItPmlzU3RvcHBlZFBlcm1hbmVudGx5KCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoY2hlY2twb2ludExpc3RlbmVyLT5pc1N1c3Bl
bmRlZCgpKSB7CisgICAgICAgICAgICBtX2NoZWNrcG9pbnRMaXN0ZW5lcnMuYXBwZW5kKFdURk1v
dmUoY2hlY2twb2ludExpc3RlbmVyKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGNoZWNrcG9pbnRMaXN0ZW5lci0+bWljcm90YXNrQ2hlY2twb2ludENvbXBs
ZXRlZCgpOworICAgIH0KK30KKwordm9pZCBNaWNyb3Rhc2tRdWV1ZTo6YWRkQ2hlY2twb2ludExp
c3RlbmVyKFdlYWtQdHI8RXZlbnRMb29wVGFza0dyb3VwPiYmIGxpc3RlbmVyKQoreworICAgIGlm
IChtX2NoZWNrcG9pbnRMaXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXIpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NoZWNrcG9pbnRMaXN0ZW5lcnMuYXBwZW5kKFdURk1vdmUobGlzdGVuZXIp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01pY3JvdGFza3MuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKaW5k
ZXggOTBjNzc0MGJlNzk3NzQ0ZTBmNjQwZTU2MGE3NDNkNzYzMGU0OTBkOS4uNDYyNTQ0NDI4MTQ5
NmQ2M2JiZmUxZDNiZDlmOGJkYWUzMTZhYTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL01pY3JvdGFza3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCkBA
IC0zMSw2ICszMSw3IEBAIGNsYXNzIFZNOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBF
dmVudExvb3BUYXNrOworY2xhc3MgRXZlbnRMb29wVGFza0dyb3VwOwogCiBjbGFzcyBNaWNyb3Rh
c2tRdWV1ZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00MSw2ICs0
Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZChzdGQ6OnVuaXF1
ZV9wdHI8RXZlbnRMb29wVGFzaz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwZXJmb3Jt
TWljcm90YXNrQ2hlY2twb2ludCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGVj
a3BvaW50TGlzdGVuZXIoV2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+JiYpOworCiBwcml2YXRl
OgogICAgIEpTQzo6Vk0mIHZtKCkgY29uc3QgeyByZXR1cm4gbV92bS5nZXQoKTsgfQogCkBAIC00
OCw2ICs1MSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPj4gbV9taWNyb3Rhc2tRdWV1ZTsKICAgICAvLyBGb3IgdGhlIG1haW4gdGhyZWFkIHRo
ZSBWTSBsaXZlcyBmb3JldmVyLiBGb3Igd29ya2VycyBpdCdzIGxpZmV0aW1lIGlzIHRpZWQgdG8g
b3VyIG93bmluZyBXb3JrZXJHbG9iYWxTY29wZS4gUmVnYXJkbGVzcywgd2UgcmV0YWluIHRoZSBW
TSBoZXJlIHRvIGJlIHNhZmUuCiAgICAgUmVmPEpTQzo6Vk0+IG1fdm07CisKKyAgICBWZWN0b3I8
V2Vha1B0cjxFdmVudExvb3BUYXNrR3JvdXA+PiBtX2NoZWNrcG9pbnRMaXN0ZW5lcnM7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJlMzUzOTNkNjYwMTRhZmM4MzdmMWY2
ODA1ZGFkMzY1ODQyNzEwOC4uYjk1ZjgzYjg0NDViMDQ1YTc3YmE2NzZjMjQ2MzFmYjEyNmQwZGQw
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTAzLTA5ICBTaWh1aSBMaXUgIDxzaWh1aV9s
aXVAYXBwZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2FjdGlvbnMgb3V0ZGF0ZWQg
aW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2
ZS1hZnRlci1jcmVhdGlvbi5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5kZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChjb25zdC5vcGVuRGF0YWJhc2UpOgorICAgICAgICAoY29uc3QucHJlcGFy
ZVRyYW5zYWN0aW9uLmFzeW5jIGF3YWl0KToKKyAgICAgICAgKGNvbnN0LnByZXBhcmVUcmFuc2Fj
dGlvbik6CisgICAgICAgIChjb25zdC5zbGVlcCk6CisgICAgICAgIChjb25zdC5hc3luY1Rlc3Qu
YXN5bmMgYXdhaXQpOgorICAgICAgICAoY29uc3QuYXN5bmNUZXN0KToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbDogQWRkZWQuCisKIDIwMjEtMDMtMDgg
IEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJs
ZSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIHRlc3Qgb24gaU9TLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0
YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODZjYzBjMjU0OTIxZjM3ZmI3YmE0ZDg5NTgyYzFmMzIxNDFlYWZlMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90
cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uanMKQEAgLTAsMCArMSw3MyBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK3ZhciBkYiA9IG51bGw7CisKK2NvbnN0IGRlbGV0ZURhdGFiYXNlID0gKCkgPT4gewor
ICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGV2
YWxBbmRMb2coJ2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRp
b24iJyk7CisgICAgICAgIGxldCBkZWxldGVSZXF1ZXN0ID0gZXZhbEFuZExvZygnaW5kZXhlZERC
LmRlbGV0ZURhdGFiYXNlKGRibmFtZSknKTsKKyAgICAgICAgZGVsZXRlUmVxdWVzdC5vbnN1Y2Nl
c3MgPSAoKSA9PiByZXNvbHZlKCk7CisgICAgICAgIGRlbGV0ZVJlcXVlc3Qub25lcnJvciA9ICgp
ID0+IHJlamVjdCgpOworICAgIH0pOworfQorCitjb25zdCBvcGVuRGF0YWJhc2UgPSAoKSA9PiB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
aWYgKGRiKSB7CisgICAgICAgICAgICBkZWJ1ZygnZGF0YWJhc2UgZXhpc3RzJyk7CisgICAgICAg
ICAgICByZXNvbHZlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsZXQgb3BlblJl
cXVlc3QgPSBldmFsQW5kTG9nKCdpbmRleGVkREIub3BlbihkYm5hbWUpJyk7CisgICAgICAgICAg
ICBvcGVuUmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICAgICAgZGIuY3JlYXRl
T2JqZWN0U3RvcmUoJ3N0b3JlJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvcGVuUmVx
dWVzdC5vbnN1Y2Nlc3MgPSAgKCkgPT4gcmVzb2x2ZSgpOworICAgICAgICAgICAgb3BlblJlcXVl
c3Qub25lcnJvciA9ICgpID0+IHJlamVjdCgpOworICAgICAgICB9CisgICAgfSk7Cit9CisKK2Nv
bnN0IHByZXBhcmVUcmFuc2FjdGlvbiA9IGFzeW5jICgpID0+IHsKKyAgICBhd2FpdCBvcGVuRGF0
YWJhc2UoKTsKKyAgICBldmFsQW5kTG9nKCd0cmFuc2FjdGlvbiA9IGRiLnRyYW5zYWN0aW9uKCJz
dG9yZSIsICJyZWFkd3JpdGUiKScpOworfQorCitjb25zdCBwdXRSZWNvcmQgPSAoa2V5KSA9PiB7
CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHB1dFJlcXVlc3QgPSBldmFsQW5kTG9nKCd0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgic3RvcmUiKS5wdXQoInZhbHVlIiwgImtleSIpJyk7CisgICAgICAgICAgICBw
dXRSZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUoKTsKKyAgICAgICAgICAgIHB1dFJl
cXVlc3Qub25lcnJvciA9IChldmVudCkgPT4gcmVqZWN0KGV2ZW50KTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICByZWplY3QoZSk7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwor
Y29uc3Qgc2xlZXAgPSAobXMpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUp
ID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTsKK30KKworY29uc3QgYXN5bmNUZXN0ID0gYXN5
bmMoKSA9PiB7CisgICAgYXdhaXQgZGVsZXRlRGF0YWJhc2UoKTsKKworICAgIGF3YWl0IHByZXBh
cmVUcmFuc2FjdGlvbigpOworICAgIGF3YWl0IHB1dFJlY29yZCgpOworCisgICAgZGVidWcoJ3Ns
ZWVwIDEwMG1zJyk7CisgICAgYXdhaXQgc2xlZXAoMTAwKTsKKworICAgIGF3YWl0IHByZXBhcmVU
cmFuc2FjdGlvbigpOworICAgIHB1dFJlY29yZCgpCisgICAgLnRoZW4oKCkgPT4gZmluaXNoSlNU
ZXN0KCkpCisgICAgLmNhdGNoKChlcnJvcikgPT4geworICAgICAgICB0ZXN0RmFpbGVkKCdGYWls
ZWQgdG8gcHV0IHJlY29yZCcpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9KTsKK30K
KworYXN5bmNUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFm
dGVyLWNyZWF0aW9uLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjVlYjVjYmFlMzc2ZmRmY2M1
YjVjYzFkODdhZDFjZDczYWNjOTk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitkYm5hbWUgPSAidHJhbnNhY3Rpb24tc3RhdGUt
YWN0aXZlLWFmdGVyLWNyZWF0aW9uIgoraW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkK
K2luZGV4ZWREQi5vcGVuKGRibmFtZSkKK3RyYW5zYWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInN0
b3JlIiwgInJlYWR3cml0ZSIpCit0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSgic3RvcmUiKS5wdXQo
InZhbHVlIiwgImtleSIpCitzbGVlcCAxMDBtcworZGF0YWJhc2UgZXhpc3RzCit0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3JpdGUiKQordHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoInN0b3JlIikucHV0KCJ2YWx1ZSIsICJrZXkiKQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlv
bi5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUt
YWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc1Y2MzMjY1MDdkOWFhNjIz
N2U1YjAxOTZjNmM4ZjA5YjFkMzM3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5o
dG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422842</attachid>
            <date>2021-03-10 10:20:51 -0800</date>
            <delta_ts>2021-03-10 23:57:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216769-20210310102050.patch</filename>
            <type>text/plain</type>
            <size>11183</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIzMjM1Y2FlYzQxNWQ0
ZTQ2ZDU3MTQ4NDQ4NjJmZDM5NTcyNDQ2Zi4uYmU4NDU1OTQyNzEwMDc2OWI4ZjdjN2VlMGIyN2Nk
MTE1N2RlNGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAzLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWQgREIgdHJhbnNh
Y3Rpb25zIG91dGRhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGp1c3QgY3JlYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82OTMyMTA3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
dGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbAorCisgICAgICAgIFNldCB0cmFuc2FjdGlv
biBpbmFjdGl2ZSBpbiBtaWNyb3Rhc2sgY2hlY2twb2ludCBhY2NvcmRpbmcgdG8gc3BlYzoKKyAg
ICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jcGVyZm9ybS1hLW1pY3JvdGFzay1j
aGVja3BvaW50CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbjo6SURCVHJhbnNhY3Rpb24pOgor
ICAgICAgICAqIGRvbS9FdmVudExvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29w
VGFza0dyb3VwOjpydW5BdEVuZE9mTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAgICAgICogZG9t
L0V2ZW50TG9vcC5oOgorICAgICAgICAqIGRvbS9NaWNyb3Rhc2tzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1pY3JvdGFza1F1ZXVlOjpwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpNaWNyb3Rhc2tRdWV1ZTo6YWRkQ2hlY2twb2ludFRhc2spOgorICAgICAg
ICAqIGRvbS9NaWNyb3Rhc2tzLmg6CisgICAgICAgICogZG9tL1Rhc2tTb3VyY2UuaDoKKwogMjAy
MS0wMy0wOSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgTnVsbHB0ciBjcmFzaCBpbiBOb2RlOjppc1RleHROb2RlKCkgdmlhIEFwcGx5Qmxv
Y2tFbGVtZW50Q29tbWFuZDo6ZW5kT2ZOZXh0UGFyYWdyYXBoU3BsaXR0aW5nVGV4dE5vZGVzSWZO
ZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAppbmRleCBkODYzZjJjNGY2MjVlNWUwOGVmM2I4OGJhZWZmYzc4N2MxNjQ5ZDYx
Li5jOGQxNDdlYWNhNTZjNWM0MDcyNjkwNTk4NjQ5NDAxODMxOGRlMzZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
ICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJFdmVudExvb3AuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUg
IklEQkN1cnNvcldpdGhWYWx1ZS5oIgpAQCAtOTcsOCArOTgsNyBAQCBJREJUcmFuc2FjdGlvbjo6
SURCVHJhbnNhY3Rpb24oSURCRGF0YWJhc2UmIGRhdGFiYXNlLCBjb25zdCBJREJUcmFuc2FjdGlv
bkluZm8mCiAgICAgICAgIGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAgICAgICAgIEFTU0VSVChjb250ZXh0KTsKIAotICAgICAgICBKU0M6OlZNJiB2bSA9IGNvbnRl
eHQtPnZtKCk7Ci0gICAgICAgIHZtLndoZW5JZGxlKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyldKCkgeworICAgICAgICBjb250ZXh0LT5ldmVudExvb3AoKS5ydW5BdEVuZE9mTWljcm90
YXNrQ2hlY2twb2ludChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kZWFjdGl2YXRlKCk7CiAgICAgICAgIH0pOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExvb3AuY3BwCmluZGV4IGU3ZGVhODg3NzcyMjZkZTRiNzUzNTczNzM1OGM2NDJiNTZm
ZDI2ZTIuLmYxZTE0MDE5YmRlODc2OTYzODU1ZWEyNGVmZDJkZWJkYzE2YmFiNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudExvb3AuY3BwCkBAIC0xODAsNCArMTgwLDEyIEBAIHZvaWQgRXZlbnRMb29wVGFz
a0dyb3VwOjpwZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpCiAgICAgICAgIG1fZXZlbnRMb29w
LT5wZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOwogfQogCit2b2lkIEV2ZW50TG9vcFRhc2tH
cm91cDo6cnVuQXRFbmRPZk1pY3JvdGFza0NoZWNrcG9pbnQoRXZlbnRMb29wOjpUYXNrRnVuY3Rp
b24mJiBmdW5jdGlvbikKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U3RvcHBlZCB8fCAh
bV9ldmVudExvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIG1pY3JvdGFza1F1ZXVlKCkuYWRk
Q2hlY2twb2ludFRhc2sobWFrZVVuaXF1ZTxFdmVudExvb3BGdW5jdGlvbkRpc3BhdGNoVGFzaz4o
VGFza1NvdXJjZTo6SW5kZXhlZERCLCAqdGhpcywgV1RGTW92ZShmdW5jdGlvbikpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TG9vcC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCmluZGV4IGI2MTgzMDcx
ZDlhMjNiZGRjZWRiZDM3YzVjM2ZhMjIwMjFhZjMxMDUuLmJhNDYyNWFiZDZjOWNhNzE4MTlkMzg0
NTI3NWIwZWM2ZjEzNjEzNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExv
b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmgKQEAgLTE4Miw2ICsxODIs
OCBAQCBwdWJsaWM6CiAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvd2ViYXBwYXBpcy5odG1sI3BlcmZvcm0tYS1taWNyb3Rhc2stY2hlY2twb2ludAogICAgIHZv
aWQgcGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKIAorICAgIHZvaWQgcnVuQXRFbmRPZk1p
Y3JvdGFza0NoZWNrcG9pbnQoRXZlbnRMb29wOjpUYXNrRnVuY3Rpb24mJik7CisKIHByaXZhdGU6
CiAgICAgZW51bSBjbGFzcyBTdGF0ZSA6IHVpbnQ4X3QgeyBSdW5uaW5nLCBTdXNwZW5kZWQsIFJl
YWR5VG9TdG9wLCBTdG9wcGVkIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
aWNyb3Rhc2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmNwcAppbmRleCAy
ZTRhYTRiNTZjMTA0OGFkNDQwOTQwMzgxMmI5ODJjZWNjODY3ZTMwLi40MjJjN2FmZThiNTFkYTRi
MGZmMTI4YzZhMGJiZjA5Mjg5MzMyYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWljcm90YXNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01pY3JvdGFza3MuY3BwCkBA
IC02Nyw2ICs2NywyNSBAQCB2b2lkIE1pY3JvdGFza1F1ZXVlOjpwZXJmb3JtTWljcm90YXNrQ2hl
Y2twb2ludCgpCiAKICAgICB2bSgpLmZpbmFsaXplU3luY2hyb25vdXNKU0V4ZWN1dGlvbigpOwog
ICAgIG1fbWljcm90YXNrUXVldWUgPSBXVEZNb3ZlKHRvS2VlcCk7CisKKyAgICBhdXRvIGNoZWNr
cG9pbnRUYXNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9jaGVja3BvaW50VGFza3MsIHsgfSk7CisgICAg
Zm9yIChhdXRvJiBjaGVja3BvaW50VGFzayA6IGNoZWNrcG9pbnRUYXNrcykgeworICAgICAgICBh
dXRvKiBncm91cCA9IGNoZWNrcG9pbnRUYXNrLT5ncm91cCgpOworICAgICAgICBpZiAoIWdyb3Vw
IHx8IGdyb3VwLT5pc1N0b3BwZWRQZXJtYW5lbnRseSgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgaWYgKGdyb3VwLT5pc1N1c3BlbmRlZCgpKSB7CisgICAgICAgICAgICBtX2No
ZWNrcG9pbnRUYXNrcy5hcHBlbmQoV1RGTW92ZShjaGVja3BvaW50VGFzaykpOworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBjaGVja3BvaW50VGFzay0+ZXhlY3V0
ZSgpOworICAgIH0KK30KKwordm9pZCBNaWNyb3Rhc2tRdWV1ZTo6YWRkQ2hlY2twb2ludFRhc2so
c3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYgdGFzaykKK3sKKyAgICBtX2NoZWNrcG9p
bnRUYXNrcy5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWljcm90YXNrcy5oCmluZGV4IDkwYzc3NDBiZTc5Nzc0NGUwZjY0MGU1NjBh
NzQzZDc2MzBlNDkwZDkuLmJlMTczYjBlOGJmYjhiMTFhNWFjNDk2M2EzZGQ1YjhhZjMxYjQxNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL01pY3JvdGFza3MuaApAQCAtNDEsNiArNDEsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmQoc3RkOjp1bmlxdWVfcHRyPEV2ZW50TG9vcFRhc2s+
JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQo
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2hlY2twb2ludFRhc2soc3RkOjp1bmlx
dWVfcHRyPEV2ZW50TG9vcFRhc2s+JiYpOworCiBwcml2YXRlOgogICAgIEpTQzo6Vk0mIHZtKCkg
Y29uc3QgeyByZXR1cm4gbV92bS5nZXQoKTsgfQogCkBAIC00OCw2ICs1MCw4IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrPj4gbV9taWNyb3Rhc2tR
dWV1ZTsKICAgICAvLyBGb3IgdGhlIG1haW4gdGhyZWFkIHRoZSBWTSBsaXZlcyBmb3JldmVyLiBG
b3Igd29ya2VycyBpdCdzIGxpZmV0aW1lIGlzIHRpZWQgdG8gb3VyIG93bmluZyBXb3JrZXJHbG9i
YWxTY29wZS4gUmVnYXJkbGVzcywgd2UgcmV0YWluIHRoZSBWTSBoZXJlIHRvIGJlIHNhZmUuCiAg
ICAgUmVmPEpTQzo6Vk0+IG1fdm07CisKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEV2ZW50
TG9vcFRhc2s+PiBtX2NoZWNrcG9pbnRUYXNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCmluZGV4IDMzOThmOGJkOGZkYzE2MmQ0Nzk3NTFkYTcx
NjdjZWMyZWM1NTUxNDAuLjQ3ZGFiYjZkZDBjMDE5NDI4MTIzNTY3OGI1ZjI4ZTY0YzM0YzZkNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Rhc2tTb3VyY2UuaApAQCAtMzMsMTQgKzMzLDE1IEBAIGVudW0gY2xhc3Mg
VGFza1NvdXJjZSA6IHVpbnQ4X3QgewogICAgIEZpbGVSZWFkaW5nLAogICAgIEZvbnRMb2FkaW5n
LAogICAgIElkbGVUYXNrLAorICAgIEluZGV4ZWREQiwKICAgICBNZWRpYUVsZW1lbnQsCiAgICAg
TWljcm90YXNrLAogICAgIE5ldHdvcmtpbmcsCiAgICAgUG9zdGVkTWVzc2FnZVF1ZXVlLAorICAg
IFNwZWVjaCwKICAgICBVc2VySW50ZXJhY3Rpb24sCiAgICAgV2ViR0wsCiAgICAgV2ViWFIsCi0g
ICAgU3BlZWNoLAogCiAgICAgLy8gSW50ZXJuYWwgdG8gV2ViQ29yZQogICAgIEludGVybmFsQXN5
bmNUYXNrLCAvLyBTYWZlIHRvIHJlLW9yZGVyIG9yIGRlbGF5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg1MmUzMzE1NGMx
ZGVhNGZjNjVhMGFiZjM5ZGE0ZjI0NTliYWRiZjYuLjFhNmE2M2E5OWEzZDY4YmZmOTJhN2U5NTQ3
ZTA4ZDNkODIwZTVjNjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wMy0xMCAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBJbmRleGVkIERCIHRyYW5zYWN0
aW9ucyBvdXRkYXRlZCBpbW1lZGlhdGVseSBhZnRlciBpdCBqdXN0IGNyZWF0ZWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjc2OQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNjkzMjEwNzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rp
b24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0
LmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKGNvbnN0Lm9wZW5EYXRhYmFzZSk6CisgICAgICAg
IChjb25zdC5wcmVwYXJlVHJhbnNhY3Rpb24uYXN5bmMgYXdhaXQpOgorICAgICAgICAoY29uc3Qu
cHJlcGFyZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKGNvbnN0LnNsZWVwKToKKyAgICAgICAgKGNv
bnN0LmFzeW5jVGVzdC5hc3luYyBhd2FpdCk6CisgICAgICAgIChjb25zdC5hc3luY1Rlc3QpOgor
ICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRl
ci1jcmVhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5odG1sOiBBZGRlZC4K
KwogMjAyMS0wMy0wOSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBhcHBsZS5j
b20+CiAKICAgICAgICAgTnVsbHB0ciBjcmFzaCBpbiBOb2RlOjppc1RleHROb2RlKCkgdmlhIEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6ZW5kT2ZOZXh0UGFyYWdyYXBoU3BsaXR0aW5nVGV4dE5v
ZGVzSWZOZWVkZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uanMgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhdGUtYWN0
aXZlLWFmdGVyLWNyZWF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2Y2MwYzI1NDkyMWYzN2ZiN2JhNGQ4
OTU4MmMxZjMyMTQxZWFmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0
aW9uLmpzCkBAIC0wLDAgKzEsNzMgQEAKK2lmICh0aGlzLmltcG9ydFNjcmlwdHMpIHsKKyAgICBp
bXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcycpOworICAgIGltcG9y
dFNjcmlwdHMoJ3NoYXJlZC5qcycpOworfQorCit2YXIgZGIgPSBudWxsOworCitjb25zdCBkZWxl
dGVEYXRhYmFzZSA9ICgpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBldmFsQW5kTG9nKCdkYm5hbWUgPSAidHJhbnNhY3Rpb24tc3Rh
dGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uIicpOworICAgICAgICBsZXQgZGVsZXRlUmVxdWVzdCA9
IGV2YWxBbmRMb2coJ2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpJyk7CisgICAgICAg
IGRlbGV0ZVJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVzb2x2ZSgpOworICAgICAgICBkZWxl
dGVSZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QoKTsKKyAgICB9KTsKK30KKworY29uc3Qg
b3BlbkRhdGFiYXNlID0gKCkgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgIGlmIChkYikgeworICAgICAgICAgICAgZGVidWcoJ2RhdGFi
YXNlIGV4aXN0cycpOworICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgbGV0IG9wZW5SZXF1ZXN0ID0gZXZhbEFuZExvZygnaW5kZXhlZERCLm9wZW4o
ZGJuYW1lKScpOworICAgICAgICAgICAgb3BlblJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
ICAgICAgICAgICAgIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gICgpID0+IHJlc29sdmUoKTsK
KyAgICAgICAgICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiByZWplY3QoKTsKKyAgICAg
ICAgfQorICAgIH0pOworfQorCitjb25zdCBwcmVwYXJlVHJhbnNhY3Rpb24gPSBhc3luYyAoKSA9
PiB7CisgICAgYXdhaXQgb3BlbkRhdGFiYXNlKCk7CisgICAgZXZhbEFuZExvZygndHJhbnNhY3Rp
b24gPSBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdyaXRlIiknKTsKK30KKworY29uc3Qg
cHV0UmVjb3JkID0gKGtleSkgPT4geworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBwdXRSZXF1ZXN0ID0gZXZh
bEFuZExvZygndHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUoInN0b3JlIikucHV0KCJ2YWx1ZSIsICJr
ZXkiKScpOworICAgICAgICAgICAgcHV0UmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiByZXNvbHZl
KCk7CisgICAgICAgICAgICBwdXRSZXF1ZXN0Lm9uZXJyb3IgPSAoZXZlbnQpID0+IHJlamVjdChl
dmVudCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgcmVqZWN0KGUpOworICAg
ICAgICB9CisgICAgfSk7Cit9CisKK2NvbnN0IHNsZWVwID0gKG1zKSA9PiB7CisgICAgcmV0dXJu
IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7Cit9CisK
K2NvbnN0IGFzeW5jVGVzdCA9IGFzeW5jKCkgPT4geworICAgIGF3YWl0IGRlbGV0ZURhdGFiYXNl
KCk7CisKKyAgICBhd2FpdCBwcmVwYXJlVHJhbnNhY3Rpb24oKTsKKyAgICBhd2FpdCBwdXRSZWNv
cmQoKTsKKworICAgIGRlYnVnKCdzbGVlcCAxMDBtcycpOworICAgIGF3YWl0IHNsZWVwKDEwMCk7
CisKKyAgICBhd2FpdCBwcmVwYXJlVHJhbnNhY3Rpb24oKTsKKyAgICBwdXRSZWNvcmQoKQorICAg
IC50aGVuKCgpID0+IGZpbmlzaEpTVGVzdCgpKQorICAgIC5jYXRjaCgoZXJyb3IpID0+IHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgnRmFpbGVkIHRvIHB1dCByZWNvcmQnKTsKKyAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgfSk7Cit9CisKK2FzeW5jVGVzdCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNy
ZWF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5z
YWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTY1ZWI1Y2JhZTM3NmZkZmNjNWI1Y2MxZDg3YWQxY2Q3M2FjYzk5OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFj
dGl2ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorZGJuYW1l
ID0gInRyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbiIKK2luZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCit0cmFuc2FjdGlv
biA9IGRiLnRyYW5zYWN0aW9uKCJzdG9yZSIsICJyZWFkd3JpdGUiKQordHJhbnNhY3Rpb24ub2Jq
ZWN0U3RvcmUoInN0b3JlIikucHV0KCJ2YWx1ZSIsICJrZXkiKQorc2xlZXAgMTAwbXMKK2RhdGFi
YXNlIGV4aXN0cwordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigic3RvcmUiLCAicmVhZHdy
aXRlIikKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZSIpLnB1dCgidmFsdWUiLCAia2V5
IikKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0
ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ3NWNjMzI2NTA3ZDlhYTYyMzdlNWIwMTk2YzZjOGYwOWIxZDMzN2IKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1h
Y3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1j
cmVhdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422907</attachid>
            <date>2021-03-10 23:57:40 -0800</date>
            <delta_ts>2021-03-11 00:41:30 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-216769-20210310235739.patch</filename>
            <type>text/plain</type>
            <size>10359</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIzMjM1Y2FlYzQxNWQ0
ZTQ2ZDU3MTQ4NDQ4NjJmZDM5NTcyNDQ2Zi4uYTVmOTVjNzNiYmEyYjJjNGU3NjgyMzkyZmVkNjJh
ZGYxZmIwOGYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTAzLTEwICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIEluZGV4ZWQgREIgdHJhbnNh
Y3Rpb25zIG91dGRhdGVkIGltbWVkaWF0ZWx5IGFmdGVyIGl0IGp1c3QgY3JlYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzY5CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82OTMyMTA3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtl
IE5pd2EuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3Rh
dGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9uLmh0bWwKKworICAgICAgICBTZXQgdHJhbnNhY3Rpb24g
aW5hY3RpdmUgaW4gbWljcm90YXNrIGNoZWNrcG9pbnQgYWNjb3JkaW5nIHRvIHNwZWM6CisgICAg
ICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3BlcmZvcm0tYS1taWNyb3Rhc2stY2hl
Y2twb2ludAorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb246OklEQlRyYW5zYWN0aW9uKToKKyAg
ICAgICAgKiBkb20vRXZlbnRMb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcFRh
c2tHcm91cDo6cnVuQXRFbmRPZk1pY3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAgICAqIGRvbS9F
dmVudExvb3AuaDoKKyAgICAgICAgKiBkb20vTWljcm90YXNrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNaWNyb3Rhc2tRdWV1ZTo6cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWljcm90YXNrUXVldWU6OmFkZENoZWNrcG9pbnRUYXNrKToKKyAgICAgICAg
KiBkb20vTWljcm90YXNrcy5oOgorICAgICAgICAqIGRvbS9UYXNrU291cmNlLmg6CisKIDIwMjEt
MDMtMDkgIFZlbmt5IERhc3MgIDx5YXJhbmFtYXZlbmthdGFyYW1hbmFAYXBwbGUuY29tPgogCiAg
ICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gTm9kZTo6aXNUZXh0Tm9kZSgpIHZpYSBBcHBseUJsb2Nr
RWxlbWVudENvbW1hbmQ6OmVuZE9mTmV4dFBhcmFncmFwaFNwbGl0dGluZ1RleHROb2Rlc0lmTmVl
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggZDg2M2YyYzRmNjI1ZTVlMDhlZjNiODhiYWVmZmM3ODdjMTY0OWQ2MS4u
YzhkMTQ3ZWFjYTU2YzVjNDA3MjY5MDU5ODY0OTQwMTgzMThkZTM2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnREaXNwYXRjaGVyLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJJ
REJDdXJzb3JXaXRoVmFsdWUuaCIKQEAgLTk3LDggKzk4LDcgQEAgSURCVHJhbnNhY3Rpb246OklE
QlRyYW5zYWN0aW9uKElEQkRhdGFiYXNlJiBkYXRhYmFzZSwgY29uc3QgSURCVHJhbnNhY3Rpb25J
bmZvJgogICAgICAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAgICAgICAgSlNDOjpWTSYgdm0gPSBjb250ZXh0
LT52bSgpOwotICAgICAgICB2bS53aGVuSWRsZShbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSgpIHsKKyAgICAgICAgY29udGV4dC0+ZXZlbnRMb29wKCkucnVuQXRFbmRPZk1pY3JvdGFz
a0NoZWNrcG9pbnQoW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewogICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGVhY3RpdmF0ZSgpOwogICAgICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMb29wLmNwcAppbmRleCBlN2RlYTg4Nzc3MjI2ZGU0Yjc1MzU3MzczNThjNjQyYjU2ZmQy
NmUyLi5mMWUxNDAxOWJkZTg3Njk2Mzg1NWVhMjRlZmQyZGViZGMxNmJhYjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMb29wLmNwcApAQCAtMTgwLDQgKzE4MCwxMiBAQCB2b2lkIEV2ZW50TG9vcFRhc2tH
cm91cDo6cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKQogICAgICAgICBtX2V2ZW50TG9vcC0+
cGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKIH0KIAordm9pZCBFdmVudExvb3BUYXNrR3Jv
dXA6OnJ1bkF0RW5kT2ZNaWNyb3Rhc2tDaGVja3BvaW50KEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9u
JiYgZnVuY3Rpb24pCit7CisgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlN0b3BwZWQgfHwgIW1f
ZXZlbnRMb29wKQorICAgICAgICByZXR1cm47CisKKyAgICBtaWNyb3Rhc2tRdWV1ZSgpLmFkZENo
ZWNrcG9pbnRUYXNrKG1ha2VVbmlxdWU8RXZlbnRMb29wRnVuY3Rpb25EaXNwYXRjaFRhc2s+KFRh
c2tTb3VyY2U6OkluZGV4ZWREQiwgKnRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dExvb3AuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExvb3AuaAppbmRleCBiNjE4MzA3MWQ5
YTIzYmRkY2VkYmQzN2M1YzNmYTIyMDIxYWYzMTA1Li5iYTQ2MjVhYmQ2YzljYTcxODE5ZDM4NDUy
NzViMGVjNmYxMzYxMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMb29w
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TG9vcC5oCkBAIC0xODIsNiArMTgyLDgg
QEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
L3dlYmFwcGFwaXMuaHRtbCNwZXJmb3JtLWEtbWljcm90YXNrLWNoZWNrcG9pbnQKICAgICB2b2lk
IHBlcmZvcm1NaWNyb3Rhc2tDaGVja3BvaW50KCk7CiAKKyAgICB2b2lkIHJ1bkF0RW5kT2ZNaWNy
b3Rhc2tDaGVja3BvaW50KEV2ZW50TG9vcDo6VGFza0Z1bmN0aW9uJiYpOworCiBwcml2YXRlOgog
ICAgIGVudW0gY2xhc3MgU3RhdGUgOiB1aW50OF90IHsgUnVubmluZywgU3VzcGVuZGVkLCBSZWFk
eVRvU3RvcCwgU3RvcHBlZCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWlj
cm90YXNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5jcHAKaW5kZXggMmU0
YWE0YjU2YzEwNDhhZDQ0MDk0MDM4MTJiOTgyY2VjYzg2N2UzMC4uNDIyYzdhZmU4YjUxZGE0YjBm
ZjEyOGM2YTBiYmYwOTI4OTMzMmM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01p
Y3JvdGFza3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmNwcApAQCAt
NjcsNiArNjcsMjUgQEAgdm9pZCBNaWNyb3Rhc2tRdWV1ZTo6cGVyZm9ybU1pY3JvdGFza0NoZWNr
cG9pbnQoKQogCiAgICAgdm0oKS5maW5hbGl6ZVN5bmNocm9ub3VzSlNFeGVjdXRpb24oKTsKICAg
ICBtX21pY3JvdGFza1F1ZXVlID0gV1RGTW92ZSh0b0tlZXApOworCisgICAgYXV0byBjaGVja3Bv
aW50VGFza3MgPSBzdGQ6OmV4Y2hhbmdlKG1fY2hlY2twb2ludFRhc2tzLCB7IH0pOworICAgIGZv
ciAoYXV0byYgY2hlY2twb2ludFRhc2sgOiBjaGVja3BvaW50VGFza3MpIHsKKyAgICAgICAgYXV0
byogZ3JvdXAgPSBjaGVja3BvaW50VGFzay0+Z3JvdXAoKTsKKyAgICAgICAgaWYgKCFncm91cCB8
fCBncm91cC0+aXNTdG9wcGVkUGVybWFuZW50bHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGlmIChncm91cC0+aXNTdXNwZW5kZWQoKSkgeworICAgICAgICAgICAgbV9jaGVj
a3BvaW50VGFza3MuYXBwZW5kKFdURk1vdmUoY2hlY2twb2ludFRhc2spKTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgY2hlY2twb2ludFRhc2stPmV4ZWN1dGUo
KTsKKyAgICB9Cit9CisKK3ZvaWQgTWljcm90YXNrUXVldWU6OmFkZENoZWNrcG9pbnRUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrPiYmIHRhc2spCit7CisgICAgbV9jaGVja3BvaW50
VGFza3MuYXBwZW5kKFdURk1vdmUodGFzaykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL01pY3JvdGFza3MuaAppbmRleCA5MGM3NzQwYmU3OTc3NDRlMGY2NDBlNTYwYTc0
M2Q3NjMwZTQ5MGQ5Li5iZTE3M2IwZThiZmI4YjExYTVhYzQ5NjNhM2RkNWI4YWYzMWI0MTU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWljcm90YXNrcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NaWNyb3Rhc2tzLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BUYXNrPiYm
KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBlcmZvcm1NaWNyb3Rhc2tDaGVja3BvaW50KCk7
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENoZWNrcG9pbnRUYXNrKHN0ZDo6dW5pcXVl
X3B0cjxFdmVudExvb3BUYXNrPiYmKTsKKwogcHJpdmF0ZToKICAgICBKU0M6OlZNJiB2bSgpIGNv
bnN0IHsgcmV0dXJuIG1fdm0uZ2V0KCk7IH0KIApAQCAtNDgsNiArNTAsOCBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wVGFzaz4+IG1fbWljcm90YXNrUXVl
dWU7CiAgICAgLy8gRm9yIHRoZSBtYWluIHRocmVhZCB0aGUgVk0gbGl2ZXMgZm9yZXZlci4gRm9y
IHdvcmtlcnMgaXQncyBsaWZldGltZSBpcyB0aWVkIHRvIG91ciBvd25pbmcgV29ya2VyR2xvYmFs
U2NvcGUuIFJlZ2FyZGxlc3MsIHdlIHJldGFpbiB0aGUgVk0gaGVyZSB0byBiZSBzYWZlLgogICAg
IFJlZjxKU0M6OlZNPiBtX3ZtOworCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxFdmVudExv
b3BUYXNrPj4gbV9jaGVja3BvaW50VGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1Rhc2tTb3VyY2UuaAppbmRleCAzMzk4ZjhiZDhmZGMxNjJkNDc5NzUxZGE3MTY3
Y2VjMmVjNTU1MTQwLi40N2RhYmI2ZGQwYzAxOTQyODEyMzU2NzhiNWYyOGU2NGMzNGM2ZDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGFza1NvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UYXNrU291cmNlLmgKQEAgLTMzLDE0ICszMywxNSBAQCBlbnVtIGNsYXNzIFRh
c2tTb3VyY2UgOiB1aW50OF90IHsKICAgICBGaWxlUmVhZGluZywKICAgICBGb250TG9hZGluZywK
ICAgICBJZGxlVGFzaywKKyAgICBJbmRleGVkREIsCiAgICAgTWVkaWFFbGVtZW50LAogICAgIE1p
Y3JvdGFzaywKICAgICBOZXR3b3JraW5nLAogICAgIFBvc3RlZE1lc3NhZ2VRdWV1ZSwKKyAgICBT
cGVlY2gsCiAgICAgVXNlckludGVyYWN0aW9uLAogICAgIFdlYkdMLAogICAgIFdlYlhSLAotICAg
IFNwZWVjaCwKIAogICAgIC8vIEludGVybmFsIHRvIFdlYkNvcmUKICAgICBJbnRlcm5hbEFzeW5j
VGFzaywgLy8gU2FmZSB0byByZS1vcmRlciBvciBkZWxheS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NTJlMzMxNTRjMWRl
YTRmYzY1YTBhYmYzOWRhNGYyNDU5YmFkYmY2Li43ZDVkNmY3ZDRjMDk3YmVlMGZhMzg0NjVkNmFi
ZGE2ZWUwMzEyZmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDMtMTAgIFNpaHVpIExp
dSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5kZXhlZCBEQiB0cmFuc2FjdGlv
bnMgb3V0ZGF0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgaXQganVzdCBjcmVhdGVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3NjkKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5MzIxMDc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2
ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi5odG1sOiBB
ZGRlZC4KKwogMjAyMS0wMy0wOSAgVmVua3kgRGFzcyAgPHlhcmFuYW1hdmVua2F0YXJhbWFuYUBh
cHBsZS5jb20+CiAKICAgICAgICAgTnVsbHB0ciBjcmFzaCBpbiBOb2RlOjppc1RleHROb2RlKCkg
dmlhIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6ZW5kT2ZOZXh0UGFyYWdyYXBoU3BsaXR0aW5n
VGV4dE5vZGVzSWZOZWVkZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3RyYW5zYWN0aW9uLXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUt
YWZ0ZXItY3JlYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2NWViNWNiYWUzNzZmZGZj
YzViNWNjMWQ4N2FkMWNkNzNhY2M5OTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24t
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK2RibmFtZSA9ICJ0cmFuc2FjdGlvbi1zdGF0
ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24iCitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1l
KQoraW5kZXhlZERCLm9wZW4oZGJuYW1lKQordHJhbnNhY3Rpb24gPSBkYi50cmFuc2FjdGlvbigi
c3RvcmUiLCAicmVhZHdyaXRlIikKK3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZSIpLnB1
dCgidmFsdWUiLCAia2V5IikKK3NsZWVwIDEwMG1zCitkYXRhYmFzZSBleGlzdHMKK3RyYW5zYWN0
aW9uID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpCit0cmFuc2FjdGlvbi5v
YmplY3RTdG9yZSgic3RvcmUiKS5wdXQoInZhbHVlIiwgImtleSIpCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zdGF0
ZS1hY3RpdmUtYWZ0ZXItY3JlYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTkyYzlkZDI2MTM2ZjU5
ZDA3OTE1YjFlNDg1NjM4NWYxMWNhY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RhdGUtYWN0aXZlLWFmdGVyLWNyZWF0aW9u
Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGRiID0gbnVsbDsKKworY29uc3Qg
ZGVsZXRlRGF0YWJhc2UgPSAoKSA9PiB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKKyAgICAgICAgZXZhbEFuZExvZygnZGJuYW1lID0gInRyYW5zYWN0aW9u
LXN0YXRlLWFjdGl2ZS1hZnRlci1jcmVhdGlvbiInKTsKKyAgICAgICAgbGV0IGRlbGV0ZVJlcXVl
c3QgPSBldmFsQW5kTG9nKCdpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UoZGJuYW1lKScpOworICAg
ICAgICBkZWxldGVSZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHJlc29sdmUoKTsKKyAgICAgICAg
ZGVsZXRlUmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KCk7CisgICAgfSk7Cit9CisKK2Nv
bnN0IG9wZW5EYXRhYmFzZSA9ICgpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICBpZiAoZGIpIHsKKyAgICAgICAgICAgIGRlYnVnKCdk
YXRhYmFzZSBleGlzdHMnKTsKKyAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGxldCBvcGVuUmVxdWVzdCA9IGV2YWxBbmRMb2coJ2luZGV4ZWREQi5v
cGVuKGRibmFtZSknKTsKKyAgICAgICAgICAgIG9wZW5SZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgIGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
KyAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnc3RvcmUnKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG9wZW5SZXF1ZXN0Lm9uc3VjY2VzcyA9ICAoKSA9PiByZXNvbHZl
KCk7CisgICAgICAgICAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gKCkgPT4gcmVqZWN0KCk7Cisg
ICAgICAgIH0KKyAgICB9KTsKK30KKworY29uc3QgcHJlcGFyZVRyYW5zYWN0aW9uID0gYXN5bmMg
KCkgPT4geworICAgIGF3YWl0IG9wZW5EYXRhYmFzZSgpOworICAgIGV2YWxBbmRMb2coJ3RyYW5z
YWN0aW9uID0gZGIudHJhbnNhY3Rpb24oInN0b3JlIiwgInJlYWR3cml0ZSIpJyk7Cit9CisKK2Nv
bnN0IHB1dFJlY29yZCA9IChrZXkpID0+IHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICB0cnkgeworICAgICAgICAgICAgcHV0UmVxdWVzdCA9
IGV2YWxBbmRMb2coJ3RyYW5zYWN0aW9uLm9iamVjdFN0b3JlKCJzdG9yZSIpLnB1dCgidmFsdWUi
LCAia2V5IiknKTsKKyAgICAgICAgICAgIHB1dFJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4gcmVz
b2x2ZSgpOworICAgICAgICAgICAgcHV0UmVxdWVzdC5vbmVycm9yID0gKGV2ZW50KSA9PiByZWpl
Y3QoZXZlbnQpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHJlamVjdChlKTsK
KyAgICAgICAgfQorICAgIH0pOworfQorCitjb25zdCBzbGVlcCA9IChtcykgPT4geworICAgIHJl
dHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpOwor
fQorCitjb25zdCBhc3luY1Rlc3QgPSBhc3luYygpID0+IHsKKyAgICBhd2FpdCBkZWxldGVEYXRh
YmFzZSgpOworCisgICAgYXdhaXQgcHJlcGFyZVRyYW5zYWN0aW9uKCk7CisgICAgYXdhaXQgcHV0
UmVjb3JkKCk7CisKKyAgICBkZWJ1Zygnc2xlZXAgMTAwbXMnKTsKKyAgICBhd2FpdCBzbGVlcCgx
MDApOworCisgICAgYXdhaXQgcHJlcGFyZVRyYW5zYWN0aW9uKCk7CisgICAgcHV0UmVjb3JkKCkK
KyAgICAudGhlbigoKSA9PiBmaW5pc2hKU1Rlc3QoKSkKKyAgICAuY2F0Y2goKGVycm9yKSA9PiB7
CisgICAgICAgIHRlc3RGYWlsZWQoJ0ZhaWxlZCB0byBwdXQgcmVjb3JkJyk7CisgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgIH0pOworfQorCithc3luY1Rlc3QoKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>