<?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>221438</bug_id>
          
          <creation_ts>2021-02-04 16:51:11 -0800</creation_ts>
          <short_desc>[JSC] Atomics.store in DFG / FTL should return ToNumber(input) value</short_desc>
          <delta_ts>2021-02-05 00:45:21 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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 name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1725875</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-04 16:51:11 -0800</bug_when>
    <thetext>[JSC] Atomics.store in DFG / FTL should return ToNumber(input) value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725878</commentid>
    <comment_count>1</comment_count>
      <attachid>419341</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-04 16:54:56 -0800</bug_when>
    <thetext>Created attachment 419341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725879</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-04 16:54:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/73973264&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725883</commentid>
    <comment_count>3</comment_count>
      <attachid>419341</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-02-04 17:05:45 -0800</bug_when>
    <thetext>Comment on attachment 419341
Patch

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

I think you should at least rationalize toIntegerOrInfinity - usually when we say &quot;toFooOrBlah&quot;, we mean &quot;convert to foo or return blah&quot;, and here you&apos;re returning zero.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2353
&gt; +        if (node-&gt;op() == AtomicsStore) {
&gt; +            switch (node-&gt;arrayMode().type()) {
&gt; +            case Array::Generic:
&gt; +                clobberWorld();
&gt; +                makeHeapTopForNode(node);
&gt; +                break;
&gt; +            default: {
&gt; +                switch (node-&gt;result()) {
&gt; +                case NodeResultJS:
&gt; +                    setNonCellTypeForNode(node, SpecInt32Only);
&gt; +                    break;
&gt; +                case NodeResultInt52:
&gt; +                    setNonCellTypeForNode(node, SpecInt52Any);
&gt; +                    break;
&gt; +                case NodeResultDouble:
&gt; +                    setNonCellTypeForNode(node, SpecFullDouble);
&gt; +                    break;
&gt; +                default:
&gt; +                    DFG_CRASH(m_graph, node, &quot;Bad result type&quot;);
&gt; +                    break;
&gt; +                }
&gt; +                break;
&gt; +            }
&gt; +            }
&gt; +            break;
&gt; +        }

It&apos;s not clear why the switch below this wouldn&apos;t handle this properly.  I think that this is worth a good comment.  It&apos;s also a bit weird that we&apos;re casing on result type rather than the operand type.  Usually, we use the operand&apos;s useKind as the criterion we switch on - and from reading the fixup code, it seems like the result type is completely determined by the stored value operand useKind.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:19659
&gt; +    LValue toIntegerOrInfinity(LValue doubleValue)
&gt; +    {
&gt; +        return m_out.select(m_out.doubleNotEqualAndOrdered(doubleValue, m_out.doubleZero), m_out.doubleTrunc(doubleValue), m_out.doubleZero);
&gt; +    }

This returns zero in the else case, not infinity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725888</commentid>
    <comment_count>4</comment_count>
      <attachid>419341</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-02-04 17:16:07 -0800</bug_when>
    <thetext>Comment on attachment 419341
Patch

Yusuke convinced me that tointegerorinfinity is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725905</commentid>
    <comment_count>5</comment_count>
      <attachid>419341</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-04 18:23:32 -0800</bug_when>
    <thetext>Comment on attachment 419341
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2353
&gt;&gt; +        }
&gt; 
&gt; It&apos;s not clear why the switch below this wouldn&apos;t handle this properly.  I think that this is worth a good comment.  It&apos;s also a bit weird that we&apos;re casing on result type rather than the operand type.  Usually, we use the operand&apos;s useKind as the criterion we switch on - and from reading the fixup code, it seems like the result type is completely determined by the stored value operand useKind.

Yup. The reason is that returned value from AtomicsStore does not rely on typed array types. For example,

Atomics.store(uint8Array, /* index */ 0, Infinity) // =&gt; returned value is Infinity

Since the other RMW atomics are returning value stored in the typed array previously, the returned value relies on the typed array types.
On the other hand, Atomics.store&apos;s returned value is input value. This means that Atomics.store+Uint8Array can return doubles while the typed array is Uint8Array (the above one is the example).
So,

        case Array::Uint8Array:
            setNonCellTypeForNode(node, SpecInt32Only);
            break;

this is not correct for AtomicsStore. AtomicsStore does not rely on typed array types, it rely on the input values type. And in fixup phase, we properly set result-type based on input value&apos;s type for AtomicsStore.
So, here, we use it to show the abstract types for AtomicsStore operation.
I&apos;ll add comment about this. And use input&apos;s useKind instead.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:19659
&gt;&gt; +    }
&gt; 
&gt; This returns zero in the else case, not infinity.

Discussed with Phil at slack. This is aligned to the spec. I&apos;ll add comments to describe how this function works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725907</commentid>
    <comment_count>6</comment_count>
      <attachid>419351</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-04 18:32:37 -0800</bug_when>
    <thetext>Created attachment 419351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725963</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-05 00:45:19 -0800</bug_when>
    <thetext>Committed r272405: &lt;https://trac.webkit.org/changeset/272405&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419351.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419341</attachid>
            <date>2021-02-04 16:54:56 -0800</date>
            <delta_ts>2021-02-04 17:16:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221438-20210204165455.patch</filename>
            <type>text/plain</type>
            <size>20849</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NGY4ZDA0YTU4OTdjNGZhYjdiOGQ4NjYyZWI2YTM2MTQ2Mjg4MzFjLi5lODVmNzUyOTZkNmQ4Y2Fl
NTY5MDNmZTVkZGVkODVhNTA0OGIzZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMS0wMi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEF0b21pY3Muc3RvcmUgaW4gREZHIC8gRlRMIHNob3VsZCByZXR1
cm4gVG9OdW1iZXIoaW5wdXQpIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE0MzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczOTczMjY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEF0b21p
Y3Muc3RvcmUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG90aGVyIFJlYWRNb2RpZnlXcml0ZSBhdG9t
aWNzLiBJdCByZXR1cm5zIHRoZSBpbnB1dCB2YWx1ZSB3aXRob3V0IHRydW5jYXRpbmcgaXQgaW50
byBUeXBlZEFycmF5J3MgcmVxdWlyZW1lbnQuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAg
ICAgICAgICB2YXIgdTggPSBuZXcgVWludDhBcnJheSg4KTsKKyAgICAgICAgICAgIEF0b21pY3Mu
c3RvcmUodTgsIDAsIDB4ZmZmZikgPT09IDB4ZmZmZiAvLyBOb3QgMHhmZi4KKworICAgICAgICBI
b3dldmVyIERGRyBhbmQgRlRMIGltcGxlbWVudGF0aW9ucyBkbyBub3QgaGFuZGxlIGl0IGNvcnJl
Y3RseS4KKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBBSSwgZml4dXAsIGFuZCBjb2RlIGdlbmVy
YXRpb25zIHRvIGhhbmRsZSB0aGlzLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5k
Rm9yQXRvbWljcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUF0b21pY3NSZWFk
TW9kaWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzZXRJ
bnRUeXBlZEFycmF5TG9hZFJlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OnRvSW50ZWdlck9ySW5maW5pdHkpOgorCiAyMDIxLTAyLTA0ICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IE9iamVjdC5l
bnRyaWVzIGluIEMrKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGU4NDgyYmRiYTk3ZTIyMDNiMGNi
ZWE4MTQxOWQwYmQ2NDVmZWQ2NTguLjVmM2I3MGJlYTUyOTA1Mzk1YjYxNDM0NTRhZGFhYmNlOWFj
MjhjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIzMjQsNiArMjMyNCwzNCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNp
Z25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgaWYgKCFzdG9yYWdlRWRnZSkKICAgICAgICAg
ICAgICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5v
cCgpID09IEF0b21pY3NTdG9yZSkgeworICAgICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQXJyYXk6OkdlbmVyaWM6CisgICAgICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKCk7CisgICAgICAgICAgICAgICAgbWFrZUhlYXBUb3BGb3JO
b2RlKG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDog
eworICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+cmVzdWx0KCkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIE5vZGVSZXN1bHRKUzoKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5
cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHRJbnQ1MjoKKyAgICAgICAgICAgICAg
ICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQ1MkFueSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJs
ZToKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9uQ2VsbFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNG
dWxsRG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJC
YWQgcmVzdWx0IHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKG5v
ZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpTZWxlY3RVc2lu
Z1ByZWRpY3Rpb25zOgogICAgICAgICBjYXNlIEFycmF5OjpVbnByb2ZpbGVkOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzZmNmJmY2M5OThmMDA4
ZjQ0MzYxNTFhZjQwMmIxY2EwMTY1MmZlNy4uMmIxYWI4YWJkZTQyMGUzZDdhNmQwMjUyNzE2Mzcy
MzkxMWVjOGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCkBAIC0xMzc5LDEwICsxMzc5LDI2IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGJsZXNzQXJyYXlPcGVy
YXRpb24oYmFzZSwgaW5kZXgsIG1fZ3JhcGguY2hpbGQobm9kZSwgMiArIG51bUV4dHJhQXRvbWlj
c0FyZ3Mobm9kZS0+b3AoKSkpKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2Rl
KCkudHlwZSgpICE9IEFycmF5OjpHZW5lcmljKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4oYmFzZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+
KGluZGV4KTsKLQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4oYmFzZSk7CisgICAg
ICAgICAgICAgICAgZml4RWRnZTxJbnQzMlVzZT4oaW5kZXgpOworCisgICAgICAgICAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gQXRvbWljc1N0b3JlKSB7CisgICAgICAgICAgICAgICAgICAgIEVk
Z2UmIG9wZXJhbmQgPSBtX2dyYXBoLmNoaWxkKG5vZGUsIDIpOworICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKG9wZXJhbmQudXNlS2luZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
SW50MzJVc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IHJlc3VsdCB0eXBl
LgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgSW50NTJSZXBVc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQo
Tm9kZVJlc3VsdEludDUyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0RG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9
PSBBcnJheTo6VWludDMyQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6
IFRoaXMgbWVhbnMgYmFzaWNhbGx5IGFsd2F5cyBkb2luZyBJbnQ1Mi4KICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5zaG91bGRTcGVjdWxhdGVJbnQ1MigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCAzOWIyM2I2NDE2
ZjA3ZDU5NDI3YmU4NTgxMTA1YTQ5OWJhNWY5ZTNmLi5hNGE1ODQ4NTJhMjM3ZWU3ZGIyYjNjYWFm
NjJkYjk2ZTllYzdkNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMzE0NSw3ICszMTQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlU
eXBlIHQKIAogICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJv
cGVydHlSZWcpOwogICAgIGxvYWRGcm9tSW50VHlwZWRBcnJheShzdG9yYWdlUmVnLCBwcm9wZXJ0
eVJlZywgcmVzdWx0UmVnLCB0eXBlKTsKLSAgICBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7Cisg
ICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICBzZXRJbnRUeXBlZEFy
cmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRSZWcsIHR5cGUsIGNhblNwZWN1bGF0ZSk7CiB9CiAK
QEAgLTMyNzEsNiArMzI3MSwzMSBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBlZEFy
cmF5U3RvcmVPcGVyYW5kKAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFNwZWN1bGF0aXZl
SklUOjpnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5kRm9yQXRvbWljcygKKyAgICBHUFJUZW1w
b3JhcnkmIHZhbHVlLAorICAgIEdQUlJlZyBwcm9wZXJ0eSwKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgIEdQUlRlbXBvcmFyeSYgcHJvcGVydHlUYWcsCisgICAgR1BSVGVtcG9yYXJ5JiB2YWx1
ZVRhZywKKyNlbmRpZgorICAgIEVkZ2UgdmFsdWVVc2UpCit7CisgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CisgICAgY29uc3RleHByIGJvb2wgaXNDbGFtcGVkID0gZmFs
c2U7CisgICAgYm9vbCByZXN1bHQgPSBnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5kKAorICAg
ICAgICB2YWx1ZSwKKyAgICAgICAgcHJvcGVydHksCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAg
ICAgICAgcHJvcGVydHlUYWcsCisgICAgICAgIHZhbHVlVGFnLAorI2VuZGlmCisgICAgICAgIHZh
bHVlVXNlLAorICAgICAgICBzbG93UGF0aENhc2VzLAorICAgICAgICBpc0NsYW1wZWQpOworICAg
IEFTU0VSVChzbG93UGF0aENhc2VzLmVtcHR5KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoR1BS
UmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSogbm9kZSwgVHlwZWRBcnJheVR5cGUgdHlw
ZSkKIHsKICAgICBBU1NFUlQoaXNJbnQodHlwZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDNjNjkxMmUzZjgxYTE1YzdkMGFkMGFkODE3
Mzc0ZDQ3NGZiZDIzM2QuLjBlZmM4NmNiZGY4ZmZjMWZmY2Q5Y2M0MjMxMDRmOTNjMDI5MDVmZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTEzODUsOCArMTM4NSwxNiBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSYgdmFsdWVUYWcsCiAjZW5kaWYKICAgICAgICAgRWRnZSB2YWx1ZVVzZSwgSklUQ29t
cGlsZXI6Okp1bXBMaXN0JiBzbG93UGF0aENhc2VzLCBib29sIGlzQ2xhbXBlZCA9IGZhbHNlKTsK
KyAgICBib29sIGdldEludFR5cGVkQXJyYXlTdG9yZU9wZXJhbmRGb3JBdG9taWNzKAorICAgICAg
ICBHUFJUZW1wb3JhcnkmIHZhbHVlLAorICAgICAgICBHUFJSZWcgcHJvcGVydHksCisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgR1BSVGVtcG9yYXJ5JiBwcm9wZXJ0eVRhZywKKyAgICAg
ICAgR1BSVGVtcG9yYXJ5JiB2YWx1ZVRhZywKKyNlbmRpZgorICAgICAgICBFZGdlIHZhbHVlVXNl
KTsKICAgICB2b2lkIGxvYWRGcm9tSW50VHlwZWRBcnJheShHUFJSZWcgc3RvcmFnZVJlZywgR1BS
UmVnIHByb3BlcnR5UmVnLCBHUFJSZWcgcmVzdWx0UmVnLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAg
dm9pZCBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChOb2RlKiwgR1BSUmVnIHJlc3VsdFJlZywg
VHlwZWRBcnJheVR5cGUsIGJvb2wgY2FuU3BlY3VsYXRlID0gZmFsc2UpOworICAgIHZvaWQgc2V0
SW50VHlwZWRBcnJheUxvYWRSZXN1bHQoTm9kZSosIEdQUlJlZyByZXN1bHRSZWcsIFR5cGVkQXJy
YXlUeXBlLCBib29sIGNhblNwZWN1bGF0ZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNz
VHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
LCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSopOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0
aW9uKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggYjA2NWRhNGJlMjVmNTFmZTVlNGEyMTMwZmU5MGI0OWI0M2MxMmE5OS4uZDI0NjcyNzJkM2Nl
MWEzNWFiZGFiZDdmZmJhZjM0ZjQwYzc2OWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zMjQzLDQzICszMjQzLDQzIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVn
IGFyZ0dQUnNbMl07CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFI7CiAKLSAgICAgICAgYXV0byBj
YWxsU2xvd1BhdGggPSBbJl0gKCkgewotICAgICAgICAgICAgYXV0byBnbG9iYWxPYmplY3RJbW1Q
dHIgPSBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKTsKLSAgICAgICAgICAgIHN3aXRjaCAobm9k
ZS0+b3AoKSkgewotICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgotICAgICAgICAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0FkZCwgcmVzdWx0R1BSLCBnbG9iYWxPYmpl
Y3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoKLSAgICAgICAgICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBbmQsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0
SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEF0b21pY3NDb21wYXJlRXhjaGFuZ2U6Ci0gICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzQ29tcGFyZUV4Y2hhbmdlLCBy
ZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNb
MF0sIGFyZ0dQUnNbMV0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBBdG9taWNzRXhjaGFuZ2U6Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25BdG9taWNzRXhjaGFuZ2UsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BS
LCBpbmRleEdQUiwgYXJnR1BSc1swXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBjYXNlIEF0b21pY3NMb2FkOgotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXRvbWljc0xvYWQsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BS
LCBpbmRleEdQUik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEF0
b21pY3NPcjoKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NP
ciwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdH
UFJzWzBdKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXRvbWlj
c1N0b3JlOgotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc1N0
b3JlLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFy
Z0dQUnNbMF0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBdG9t
aWNzU3ViOgotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc1N1
YiwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdH
UFJzWzBdKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQXRvbWlj
c1hvcjoKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NYb3Is
IHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BS
c1swXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAogICAgICAgICBp
ZiAoIXN0b3JhZ2VFZGdlKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxTbG93UGF0aCA9IFsmXSAo
KSB7CisgICAgICAgICAgICAgICAgYXV0byBnbG9iYWxPYmplY3RJbW1QdHIgPSBUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY3NBZGQ6CisgICAgICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0FkZCwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJ
bW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQW5kOgorICAgICAgICAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBbmQsIHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVF
eGNoYW5nZToKKyAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9t
aWNzQ29tcGFyZUV4Y2hhbmdlLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQ
UiwgaW5kZXhHUFIsIGFyZ0dQUnNbMF0sIGFyZ0dQUnNbMV0pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY3NFeGNoYW5nZToKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzRXhjaGFuZ2UsIHJlc3Vs
dEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
c0xvYWQ6CisgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWlj
c0xvYWQsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUik7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWlj
c09yOgorICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NP
ciwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdH
UFJzWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBBdG9taWNzU3RvcmU6CisgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQXRvbWljc1N0b3JlLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwg
aW5kZXhHUFIsIGFyZ0dQUnNbMF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEF0b21pY3NTdWI6CisgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uQXRvbWljc1N1YiwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIs
IGJhc2VHUFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzWG9yOgorICAgICAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NYb3IsIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisKICAgICAgICAgICAgIC8v
IFdlIGFyZSBpbiBnZW5lcmljIG1vZGUhCiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIGJhc2VFZGdlKTsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGluZGV4KHRoaXMs
IGluZGV4RWRnZSk7CkBAIC0zMzEzLDExICszMzEzLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IGFyZ3Nb
Ml07CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGhDYXNl
czsKLSAgICAgICAgCiAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1FeHRyYUFyZ3M7IGktLTspIHsKLSAgICAgICAgICAgIGlmICghZ2V0SW50VHlw
ZWRBcnJheVN0b3JlT3BlcmFuZChhcmdzW2ldLCBpbmRleEdQUiwgYXJnRWRnZXNbaV0sIHNsb3dQ
YXRoQ2FzZXMpKSB7CisgICAgICAgICAgICBpZiAoIWdldEludFR5cGVkQXJyYXlTdG9yZU9wZXJh
bmRGb3JBdG9taWNzKGFyZ3NbaV0sIGluZGV4R1BSLCBhcmdFZGdlc1tpXSkpIHsKICAgICAgICAg
ICAgICAgICBub1Jlc3VsdChub2RlKTsKICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwogICAg
ICAgICAgICAgfQpAQCAtMzQxNywyMSArMzQxNSwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtU
byhsb29wLCAmbV9qaXQpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFzbG93UGF0aENhc2VzLmVt
cHR5KCkpIHsKLSAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMubGluaygmbV9qaXQpOwotICAgICAg
ICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAgICAgICAgIC8v
IFNpbmNlIHdlIHNwaWxsZWQsIHdlIGNhbiBkbyB0aGluZ3MgdG8gcmVnaXN0ZXJzLgotICAgICAg
ICAgICAgbV9qaXQuYm94Q2VsbChiYXNlR1BSLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSk7Ci0gICAg
ICAgICAgICBtX2ppdC5ib3hJbnQzMihpbmRleEdQUiwgSlNWYWx1ZVJlZ3MoaW5kZXhHUFIpKTsK
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUV4dHJhQXJnczsgaS0tOykKLSAgICAg
ICAgICAgICAgICBtX2ppdC5ib3hJbnQzMihhcmdHUFJzW2ldLCBKU1ZhbHVlUmVncyhhcmdHUFJz
W2ldKSk7Ci0gICAgICAgICAgICBjYWxsU2xvd1BhdGgoKTsKLSAgICAgICAgICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMoKTsKLSAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIHN1Y2Nlc3MubGluaygmbV9qaXQpOwotICAgICAg
ICBzZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChub2RlLCByZXN1bHRHUFIsIHR5cGUpOworCisg
ICAgICAgIGlmIChub2RlLT5vcCgpID09IEF0b21pY3NTdG9yZSkgeworICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5yZXN1bHQoKSkgeworICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SlM6Cisg
ICAgICAgICAgICAgICAgbV9qaXQuemVyb0V4dGVuZDMyVG9Xb3JkKHJlc3VsdEdQUiwgcmVzdWx0
R1BSKTsKKyAgICAgICAgICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SW50
NTI6CisgICAgICAgICAgICAgICAgc3RyaWN0SW50NTJSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdERvdWJs
ZToKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG5vZGUsICJCYWQgcmVzdWx0IHR5cGUiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNvbnN0
ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IGZhbHNlOworICAgICAgICBzZXRJbnRUeXBlZEFycmF5
TG9hZFJlc3VsdChub2RlLCByZXN1bHRHUFIsIHR5cGUsIGNhblNwZWN1bGF0ZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKaW5kZXggZjUxYWRhNTc2NTU3ZjdjMTM5NTVlODAwZTE5NjBiZWM2
MDQzM2ZkOC4uOTZjYjM0NDlkMzY4MTJkZGNjNmUzZmU5MTIwNGRiODQ4YWM4MDEzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNDI3NSw3
ICs0Mjc1LDI2IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgLy8gV2UgaGF2ZSB0
byBrZWVwIGJhc2UgYWxpdmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZlLgogICAgICAg
ICBlbnN1cmVTdGlsbEFsaXZlSGVyZShsb3dDZWxsKGJhc2VFZGdlKSk7Ci0gICAgICAgIHNldElu
dFR5cGVkQXJyYXlMb2FkUmVzdWx0KHJlc3VsdCwgdHlwZSk7CisKKyAgICAgICAgaWYgKG1fbm9k
ZS0+b3AoKSA9PSBBdG9taWNzU3RvcmUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5y
ZXN1bHQoKSkgeworICAgICAgICAgICAgY2FzZSBOb2RlUmVzdWx0SlM6CisgICAgICAgICAgICAg
ICAgc2V0SW50MzIobG93SW50MzIoYXJnRWRnZXNbMF0pKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgTm9kZVJlc3VsdEludDUyOgorICAgICAgICAgICAgICAgIHNl
dFN0cmljdEludDUyKGxvd1N0cmljdEludDUyKGFyZ0VkZ2VzWzBdKSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5vZGVSZXN1bHREb3VibGU6CisgICAgICAgICAg
ICAgICAgc2V0RG91YmxlKHRvSW50ZWdlck9ySW5maW5pdHkobG93RG91YmxlKGFyZ0VkZ2VzWzBd
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiQmFkIHJlc3VsdCB0eXBlIik7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gZmFs
c2U7CisgICAgICAgIHNldEludFR5cGVkQXJyYXlMb2FkUmVzdWx0KHJlc3VsdCwgdHlwZSwgY2Fu
U3BlY3VsYXRlKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQXRvbWljc0lzTG9ja0Zy
ZWUoKQpAQCAtNTI0Nyw3ICs1MjY2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGxvYWRGcm9tSW50VHlwZWRBcnJheShwb2ludGVy
LCB0eXBlKTsKICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBrZWVwIGJhc2UgYWxp
dmUgc2luY2UgdGhhdCBrZWVwcyBzdG9yYWdlIGFsaXZlLgogICAgICAgICAgICAgICAgICAgICBl
bnN1cmVTdGlsbEFsaXZlSGVyZShiYXNlKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5T
cGVjdWxhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb25zdGV4cHIgYm9vbCBjYW5T
cGVjdWxhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBzZXRJbnRUeXBlZEFycmF5TG9h
ZFJlc3VsdChyZXN1bHQsIHR5cGUsIGNhblNwZWN1bGF0ZSk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjg5Miw3ICsxNjkxMSw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBzZXRJbnRU
eXBlZEFycmF5TG9hZFJlc3VsdChMVmFsdWUgcmVzdWx0LCBUeXBlZEFycmF5VHlwZSB0eXBlLCBi
b29sIGNhblNwZWN1bGF0ZSA9IGZhbHNlKQorICAgIHZvaWQgc2V0SW50VHlwZWRBcnJheUxvYWRS
ZXN1bHQoTFZhbHVlIHJlc3VsdCwgVHlwZWRBcnJheVR5cGUgdHlwZSwgYm9vbCBjYW5TcGVjdWxh
dGUpCiAgICAgewogICAgICAgICBpZiAoZWxlbWVudFNpemUodHlwZSkgPCA0IHx8IGlzU2lnbmVk
KHR5cGUpKSB7CiAgICAgICAgICAgICBzZXRJbnQzMihyZXN1bHQpOwpAQCAtMTk2MzQsNiArMTk2
NTMsMTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgcmV0dXJuIG1fb3V0LmFkZFB0
cihpbW11dGFibGVCdXR0ZXJmbHksIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpvZmZzZXRPZkRhdGEo
KSk7CiAgICAgfQogCisgICAgTFZhbHVlIHRvSW50ZWdlck9ySW5maW5pdHkoTFZhbHVlIGRvdWJs
ZVZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnNlbGVjdChtX291dC5kb3VibGVO
b3RFcXVhbEFuZE9yZGVyZWQoZG91YmxlVmFsdWUsIG1fb3V0LmRvdWJsZVplcm8pLCBtX291dC5k
b3VibGVUcnVuYyhkb3VibGVWYWx1ZSksIG1fb3V0LmRvdWJsZVplcm8pOworICAgIH0KKwogICAg
IHZvaWQgYWRkV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkKICAgICB7CiAgICAgICAgIG1f
Z3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2VzKCkuYWRkTGF6aWx5KHRhcmdldCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRiZTNlOTYy
OWE1NWFiMTA2MzdlOWUzYjAzZDA2OGYyNDI3OTVmZmEuLjA4MjhkMzFmNjU2Mjk2MjJlYjBmZmQz
ZmI2ZDI0ZmRmOTFiMjY5ZWEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDItMDQgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBdG9taWNzLnN0b3JlIGlu
IERGRyAvIEZUTCBzaG91bGQgcmV0dXJuIFRvTnVtYmVyKGlucHV0KSB2YWx1ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNDM4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83Mzk3MzI2ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0cmVzcy9hdG9taWMtc3RvcmUtcmVzdWx0LXR5cGUtaW4tYWku
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1kb3VibGUt
bmVnYXRpdmUtemVyby5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0
ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtZG91YmxlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0
cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1pbnQ1Mi5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgICogc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVzdWx0LmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKwogMjAyMS0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9hdG9taWMtc3RvcmUtcmVzdWx0LXR5cGUtaW4tYWkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9hdG9taWMtc3RvcmUtcmVzdWx0LXR5cGUtaW4tYWkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTc5NTg3ZThiMmVmOGUzMTVhMDExYTYwOTYzMmZlZGQ0OGQ5MGNhZgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pYy1zdG9yZS1yZXN1bHQtdHlwZS1pbi1haS5qcwpAQCAt
MCwwICsxLDUgQEAKKy8vQCBydW5EZWZhdWx0KCItLWZvcmNlRGVidWdnZXJCeXRlY29kZUdlbmVy
YXRpb249MSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9MCIpCitsZXQgYSA9IG5ldyBVaW50OEFycmF5
KDEpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIEF0b21pY3Muc3RvcmUo
YSwgMCwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hdG9taWNzLXN0b3JlLXJl
c3VsdC1kb3VibGUtbmVnYXRpdmUtemVyby5qcyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3Rv
cmUtcmVzdWx0LWRvdWJsZS1uZWdhdGl2ZS16ZXJvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY0MzhjYTYwZDNi
MThiYTlhOWEzZmY4Y2UwODY3Mjc3Mzg5YjMxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1kb3VibGUtbmVnYXRpdmUtemVyby5qcwpAQCAt
MCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZh
bHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdChpOCwgZG91YmxlKSB7CisgICAg
c2hvdWxkQmUoTWF0aC5zaWduKEF0b21pY3Muc3RvcmUoaTgsIDAsIGRvdWJsZSkpLCAwKTsKK30K
K25vSW5saW5lKHRlc3QpOworCit2YXIgaTggPSBuZXcgSW50OEFycmF5KG5ldyBTaGFyZWRBcnJh
eUJ1ZmZlcig4KSk7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoaTgs
IC0wLjApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQt
ZG91YmxlLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtZG91YmxlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJmOTJhZjg5Y2E4NzU1MjZmZDMwMzIzYWFhZjExNjFjZTNiYzRiNWIKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1kb3Vi
bGUuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoaTgsIGRvdWJs
ZSkgeworICAgIHNob3VsZEJlKEF0b21pY3Muc3RvcmUoaTgsIDAsIGRvdWJsZSksIGRvdWJsZSk7
Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGk4ID0gbmV3IEludDhBcnJheSgzMik7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoaTgsIEluZmluaXR5KTsKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVzdWx0LWludDUyLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtaW50NTIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjk1
MmQ0ODVjYTA3OWE1ZjFkNGQzNWRhZDkzYzQ1YjQxNjA2ZDFkYwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVzdWx0LWludDUyLmpzCkBAIC0wLDAgKzEs
OCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1
YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyAr
IGFjdHVhbCk7Cit9CisKK3ZhciBpOCA9IG5ldyBJbnQ4QXJyYXkoMzIpOworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZShBdG9taWNzLnN0b3JlKGk4LCAwLCAweGZm
ZmZmZmZmMDAgKyBpKSwgMHhmZmZmZmZmZjAwICsgaSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3Rv
cmUtcmVzdWx0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZjg3NDMzNjczYzE1OGVhOTg1NTBkMzExMDc3Mzkw
MjM3ZjRkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hdG9taWNzLXN0b3Jl
LXJlc3VsdC5qcwpAQCAtMCwwICsxLDggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCit2YXIgaTggPSBuZXcgSW50OEFy
cmF5KDMyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgc2hvdWxkQmUoQXRv
bWljcy5zdG9yZShpOCwgMCwgMHhmZjAwICsgaSksIDB4ZmYwMCArIGkpOwo=
</data>
<flag name="review"
          id="437547"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419351</attachid>
            <date>2021-02-04 18:32:37 -0800</date>
            <delta_ts>2021-02-05 00:45:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221438-20210204183236.patch</filename>
            <type>text/plain</type>
            <size>22546</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NGY4ZDA0YTU4OTdjNGZhYjdiOGQ4NjYyZWI2YTM2MTQ2Mjg4MzFjLi41NzcwYTIyMmUxNTRhMzE5
ZWFhNWMyYjg4YTM5Yzc3ZjI0YzYxMDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAyMS0wMi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEF0b21pY3Muc3RvcmUgaW4gREZHIC8gRlRMIHNob3VsZCByZXR1
cm4gVG9OdW1iZXIoaW5wdXQpIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjE0MzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczOTczMjY0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIEF0b21pY3Mu
c3RvcmUgaXMgZGlmZmVyZW50IGZyb20gdGhlIG90aGVyIFJlYWRNb2RpZnlXcml0ZSBhdG9taWNz
LiBJdCByZXR1cm5zIHRoZSBpbnB1dCB2YWx1ZSB3aXRob3V0IHRydW5jYXRpbmcgaXQgaW50byBU
eXBlZEFycmF5J3MgcmVxdWlyZW1lbnQuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAg
ICAgICB2YXIgdTggPSBuZXcgVWludDhBcnJheSg4KTsKKyAgICAgICAgICAgIEF0b21pY3Muc3Rv
cmUodTgsIDAsIDB4ZmZmZikgPT09IDB4ZmZmZiAvLyBOb3QgMHhmZi4KKworICAgICAgICBIb3dl
dmVyIERGRyBhbmQgRlRMIGltcGxlbWVudGF0aW9ucyBkbyBub3QgaGFuZGxlIGl0IGNvcnJlY3Rs
eS4KKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBBSSwgZml4dXAsIGFuZCBjb2RlIGdlbmVyYXRp
b25zIHRvIGhhbmRsZSB0aGlzLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQ
aGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5kRm9y
QXRvbWljcyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUF0b21pY3NSZWFkTW9k
aWZ5V3JpdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
R2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzZXRJbnRU
eXBlZEFycmF5TG9hZFJlc3VsdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OnRvSW50ZWdlck9ySW5maW5pdHkpOgorCiAyMDIxLTAyLTA0ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSW1wbGVtZW50IE9iamVjdC5lbnRy
aWVzIGluIEMrKwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGU4NDgyYmRiYTk3ZTIyMDNiMGNiZWE4
MTQxOWQwYmQ2NDVmZWQ2NTguLjIxMWYxZDI0YTY1ODk2NWIwZWEyY2VjYjc2NjFjYzdmYjQ4MTNj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTIzMjQsNiArMjMyNCw0NCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgaWYgKCFzdG9yYWdlRWRnZSkKICAgICAgICAgICAg
ICAgICBjbG9iYmVyV29ybGQoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IEF0b21pY3NTdG9yZSkgeworICAgICAgICAgICAgLy8gVGhlIHJldHVybmVkIHZhbHVlIGZy
b20gQXRvbWljcy5zdG9yZSBkb2VzIG5vdCByZWx5IG9uIHR5cGVkIGFycmF5IHR5cGVzLiBJdCBp
cyByZWx5aW5nCisgICAgICAgICAgICAvLyBvbiBpbnB1dCdzIFVzZUtpbmQuIEZvciBleGFtcGxl
LAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgICBBdG9taWNzLnN0b3JlKHVpbnQ4
QXJyYXksIC8qIGluZGV4ICovIDAsIEluZmluaXR5KSAvLyA9PiByZXR1cm5lZCB2YWx1ZSBpcyBJ
bmZpbml0eQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBvdGhlciBS
ZWFkTW9kaWZ5V3JpdGUgYXRvbWljcyByZXR1cm4gdmFsdWVzIHN0b3JlZCBpbiB0aGUgdHlwZWQg
YXJyYXkgcHJldmlvdXNseSwKKyAgICAgICAgICAgIC8vIHRoZSByZXR1cm5lZCB2YWx1ZXMgcmVs
eSBvbiB0aGUgdHlwZWQgYXJyYXkgdHlwZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBBdG9taWNzLnN0
b3JlJ3MKKyAgICAgICAgICAgIC8vIHJldHVybmVkIHZhbHVlIGlzIGlucHV0IHZhbHVlLiBUaGlz
IG1lYW5zIHRoYXQgQXRvbWljcy5zdG9yZSArIFVpbnQ4QXJyYXkgY2FuIHJldHVybiBkb3VibGVz
CisgICAgICAgICAgICAvLyB3aGlsZSB0aGUgdHlwZWQgYXJyYXkgaXMgVWludDhBcnJheSAodGhl
IGFib3ZlIG9uZSBpcyB0aGUgZXhhbXBsZSkuCisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmFy
cmF5TW9kZSgpLnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBBcnJheTo6R2VuZXJpYzoKKyAg
ICAgICAgICAgICAgICBjbG9iYmVyV29ybGQoKTsKKyAgICAgICAgICAgICAgICBtYWtlSGVhcFRv
cEZvck5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OiB7CisgICAgICAgICAgICAgICAgRWRnZSBvcGVyYW5kID0gbV9ncmFwaC5jaGlsZChub2Rl
LCAyKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wZXJhbmQudXNlS2luZCgpKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgICAgICAgICAgc2V0Tm9uQ2Vs
bFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNJbnQzMk9ubHkpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgICAg
ICAgICBzZXROb25DZWxsVHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDUyQW55KTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6Cisg
ICAgICAgICAgICAgICAgICAgIHNldE5vbkNlbGxUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVsbERv
dWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIHVz
ZSBraW5kIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgY2FzZSBBcnJheTo6U2VsZWN0VXNpbmdQcmVkaWN0
aW9uczoKICAgICAgICAgY2FzZSBBcnJheTo6VW5wcm9maWxlZDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDM2ZjZiZmNjOTk4ZjAwOGY0NDM2MTUx
YWY0MDJiMWNhMDE2NTJmZTcuLmE5OWY3MGI5NDE4YmRhODVkMDA2NDkzOGYwMmUzMzRhNTY1MmUz
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAt
MTM3OSwxMCArMTM3OSwyNiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9uKGJh
c2UsIGluZGV4LCBtX2dyYXBoLmNoaWxkKG5vZGUsIDIgKyBudW1FeHRyYUF0b21pY3NBcmdzKG5v
ZGUtPm9wKCkpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUo
KSAhPSBBcnJheTo6R2VuZXJpYykgewotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KGJhc2UpOwotICAgICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihpbmRleCk7
Ci0KKyAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KGJhc2UpOworICAgICAgICAgICAg
ICAgIGZpeEVkZ2U8SW50MzJVc2U+KGluZGV4KTsKKworICAgICAgICAgICAgICAgIGlmIChub2Rl
LT5vcCgpID09IEF0b21pY3NTdG9yZSkgeworICAgICAgICAgICAgICAgICAgICBFZGdlJiBvcGVy
YW5kID0gbV9ncmFwaC5jaGlsZChub2RlLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNo
IChvcGVyYW5kLnVzZUtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEludDMyVXNl
OgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVmYXVsdCByZXN1bHQgdHlwZS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEludDUy
UmVwVXNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1
bHRJbnQ1Mik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5z
ZXRSZXN1bHQoTm9kZVJlc3VsdERvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAiQmFkIHVzZSBraW5kIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkgPT0gQXJyYXk6OlVpbnQzMkFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBO
T1RFOiBUaGlzIG1lYW5zIGJhc2ljYWxseSBhbHdheXMgZG9pbmcgSW50NTIuCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+c2hvdWxkU3BlY3VsYXRlSW50NTIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMzliMjNi
NjQxNmYwN2Q1OTQyN2JlODU4MTEwNWE0OTliYTVmOWUzZi4uYTRhNTg0ODUyYTIzN2VlN2RiMmIz
Y2FhZjYyZGI5NmU5ZWM3ZDRiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMxNDUsNyArMzE0NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShOb2RlKiBub2RlLCBUeXBlZEFy
cmF5VHlwZSB0CiAKICAgICBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKG5vZGUsIGJhc2VSZWcs
IHByb3BlcnR5UmVnKTsKICAgICBsb2FkRnJvbUludFR5cGVkQXJyYXkoc3RvcmFnZVJlZywgcHJv
cGVydHlSZWcsIHJlc3VsdFJlZywgdHlwZSk7Ci0gICAgYm9vbCBjYW5TcGVjdWxhdGUgPSB0cnVl
OworICAgIGNvbnN0ZXhwciBib29sIGNhblNwZWN1bGF0ZSA9IHRydWU7CiAgICAgc2V0SW50VHlw
ZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0UmVnLCB0eXBlLCBjYW5TcGVjdWxhdGUpOwog
fQogCkBAIC0zMjcxLDYgKzMyNzEsMzEgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Z2V0SW50VHlw
ZWRBcnJheVN0b3JlT3BlcmFuZCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBTcGVjdWxh
dGl2ZUpJVDo6Z2V0SW50VHlwZWRBcnJheVN0b3JlT3BlcmFuZEZvckF0b21pY3MoCisgICAgR1BS
VGVtcG9yYXJ5JiB2YWx1ZSwKKyAgICBHUFJSZWcgcHJvcGVydHksCisjaWYgVVNFKEpTVkFMVUUz
Ml82NCkKKyAgICBHUFJUZW1wb3JhcnkmIHByb3BlcnR5VGFnLAorICAgIEdQUlRlbXBvcmFyeSYg
dmFsdWVUYWcsCisjZW5kaWYKKyAgICBFZGdlIHZhbHVlVXNlKQoreworICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93UGF0aENhc2VzOworICAgIGNvbnN0ZXhwciBib29sIGlzQ2xhbXBlZCA9
IGZhbHNlOworICAgIGJvb2wgcmVzdWx0ID0gZ2V0SW50VHlwZWRBcnJheVN0b3JlT3BlcmFuZCgK
KyAgICAgICAgdmFsdWUsCisgICAgICAgIHByb3BlcnR5LAorI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIHByb3BlcnR5VGFnLAorICAgICAgICB2YWx1ZVRhZywKKyNlbmRpZgorICAgICAg
ICB2YWx1ZVVzZSwKKyAgICAgICAgc2xvd1BhdGhDYXNlcywKKyAgICAgICAgaXNDbGFtcGVkKTsK
KyAgICBBU1NFUlQoc2xvd1BhdGhDYXNlcy5lbXB0eSgpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBl
IHR5cGUpCiB7CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCAzYzY5MTJlM2Y4MWExNWM3ZDBhZDBh
ZDgxNzM3NGQ0NzRmYmQyMzNkLi4wZWZjODZjYmRmOGZmYzFmZmNkOWNjNDIzMTA0ZjkzYzAyOTA1
ZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xMzg1LDggKzEzODUsMTYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgICAgICBH
UFJUZW1wb3JhcnkmIHZhbHVlVGFnLAogI2VuZGlmCiAgICAgICAgIEVkZ2UgdmFsdWVVc2UsIEpJ
VENvbXBpbGVyOjpKdW1wTGlzdCYgc2xvd1BhdGhDYXNlcywgYm9vbCBpc0NsYW1wZWQgPSBmYWxz
ZSk7CisgICAgYm9vbCBnZXRJbnRUeXBlZEFycmF5U3RvcmVPcGVyYW5kRm9yQXRvbWljcygKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5JiB2YWx1ZSwKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5LAorI2lm
IFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIEdQUlRlbXBvcmFyeSYgcHJvcGVydHlUYWcsCisg
ICAgICAgIEdQUlRlbXBvcmFyeSYgdmFsdWVUYWcsCisjZW5kaWYKKyAgICAgICAgRWRnZSB2YWx1
ZVVzZSk7CiAgICAgdm9pZCBsb2FkRnJvbUludFR5cGVkQXJyYXkoR1BSUmVnIHN0b3JhZ2VSZWcs
IEdQUlJlZyBwcm9wZXJ0eVJlZywgR1BSUmVnIHJlc3VsdFJlZywgVHlwZWRBcnJheVR5cGUpOwot
ICAgIHZvaWQgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQoTm9kZSosIEdQUlJlZyByZXN1bHRS
ZWcsIFR5cGVkQXJyYXlUeXBlLCBib29sIGNhblNwZWN1bGF0ZSA9IGZhbHNlKTsKKyAgICB2b2lk
IHNldEludFR5cGVkQXJyYXlMb2FkUmVzdWx0KE5vZGUqLCBHUFJSZWcgcmVzdWx0UmVnLCBUeXBl
ZEFycmF5VHlwZSwgYm9vbCBjYW5TcGVjdWxhdGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
bGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsKICAgICB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IGIwNjVkYTRiZTI1ZjUxZmU1ZTRhMjEzMGZlOTBiNDliNDNjMTJhOTkuLjJmMzI4MjU3
NTUxYTVkYjdhZjA0YjMxNDRkZDUzZWFjYjgzMDYyYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzI0Myw0MyArMzI0Myw0
MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQ
UlJlZyBhcmdHUFJzWzJdOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSOwogCi0gICAgICAgIGF1
dG8gY2FsbFNsb3dQYXRoID0gWyZdICgpIHsKLSAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0
SW1tUHRyID0gVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSk7Ci0gICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQXRvbWljc0FkZDoKLSAgICAgICAgICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwgZ2xvYmFs
T2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEF0b21pY3NBbmQ6Ci0gICAgICAgICAgICAg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzQW5kLCByZXN1bHRHUFIsIGdsb2JhbE9i
amVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNbMF0pOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBdG9taWNzQ29tcGFyZUV4Y2hhbmdlOgotICAg
ICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0NvbXBhcmVFeGNoYW5n
ZSwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BSLCBhcmdH
UFJzWzBdLCBhcmdHUFJzWzFdKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgQXRvbWljc0V4Y2hhbmdlOgotICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXRvbWljc0V4Y2hhbmdlLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFz
ZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNbMF0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBBdG9taWNzTG9hZDoKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkF0b21pY3NMb2FkLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFz
ZUdQUiwgaW5kZXhHUFIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBBdG9taWNzT3I6Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9t
aWNzT3IsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwg
YXJnR1BSc1swXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEF0
b21pY3NTdG9yZToKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21p
Y3NTdG9yZSwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VHUFIsIGluZGV4R1BS
LCBhcmdHUFJzWzBdKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
QXRvbWljc1N1YjoKLSAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21p
Y3NTdWIsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwg
YXJnR1BSc1swXSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEF0
b21pY3NYb3I6Ci0gICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNz
WG9yLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFy
Z0dQUnNbMF0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKICAgICAg
ICAgaWYgKCFzdG9yYWdlRWRnZSkgeworICAgICAgICAgICAgYXV0byBjYWxsU2xvd1BhdGggPSBb
Jl0gKCkgeworICAgICAgICAgICAgICAgIGF1dG8gZ2xvYmFsT2JqZWN0SW1tUHRyID0gVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzQWRkOgorICAgICAgICAgICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQsIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzQW5kLCByZXN1bHRHUFIs
IGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNbMF0pOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEF0b21pY3NDb21w
YXJlRXhjaGFuZ2U6CisgICAgICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
QXRvbWljc0NvbXBhcmVFeGNoYW5nZSwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJh
c2VHUFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdLCBhcmdHUFJzWzFdKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzRXhjaGFuZ2U6CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0V4Y2hhbmdlLCBy
ZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNb
MF0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY3NMb2FkOgorICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkF0
b21pY3NMb2FkLCByZXN1bHRHUFIsIGdsb2JhbE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhH
UFIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEF0
b21pY3NPcjoKKyAgICAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9t
aWNzT3IsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1tUHRyLCBiYXNlR1BSLCBpbmRleEdQUiwg
YXJnR1BSc1swXSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgQXRvbWljc1N0b3JlOgorICAgICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkF0b21pY3NTdG9yZSwgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3RJbW1QdHIsIGJhc2VH
UFIsIGluZGV4R1BSLCBhcmdHUFJzWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBBdG9taWNzU3ViOgorICAgICAgICAgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NTdWIsIHJlc3VsdEdQUiwgZ2xvYmFsT2JqZWN0SW1t
UHRyLCBiYXNlR1BSLCBpbmRleEdQUiwgYXJnR1BSc1swXSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQXRvbWljc1hvcjoKKyAgICAgICAgICAgICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzWG9yLCByZXN1bHRHUFIsIGdsb2Jh
bE9iamVjdEltbVB0ciwgYmFzZUdQUiwgaW5kZXhHUFIsIGFyZ0dQUnNbMF0pOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCiAgICAgICAgICAg
ICAvLyBXZSBhcmUgaW4gZ2VuZXJpYyBtb2RlIQogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBiYXNlRWRnZSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBpbmRleCh0
aGlzLCBpbmRleEVkZ2UpOwpAQCAtMzMxMywxMSArMzMxMyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSBh
cmdzWzJdOwogICAgICAgICAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRo
Q2FzZXM7Ci0gICAgICAgIAogICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbnVtRXh0cmFBcmdzOyBpLS07KSB7Ci0gICAgICAgICAgICBpZiAoIWdldElu
dFR5cGVkQXJyYXlTdG9yZU9wZXJhbmQoYXJnc1tpXSwgaW5kZXhHUFIsIGFyZ0VkZ2VzW2ldLCBz
bG93UGF0aENhc2VzKSkgeworICAgICAgICAgICAgaWYgKCFnZXRJbnRUeXBlZEFycmF5U3RvcmVP
cGVyYW5kRm9yQXRvbWljcyhhcmdzW2ldLCBpbmRleEdQUiwgYXJnRWRnZXNbaV0pKSB7CiAgICAg
ICAgICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsK
ICAgICAgICAgICAgIH0KQEAgLTM0MTcsMjEgKzM0MTUsMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICB9CiAgICAgICAgIG1faml0Lmp1bXAoKS5s
aW5rVG8obG9vcCwgJm1faml0KTsKICAgICAgICAgCi0gICAgICAgIGlmICghc2xvd1BhdGhDYXNl
cy5lbXB0eSgpKSB7Ci0gICAgICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Ci0gICAgICAgICAg
ICAvLyBTaW5jZSB3ZSBzcGlsbGVkLCB3ZSBjYW4gZG8gdGhpbmdzIHRvIHJlZ2lzdGVycy4KLSAg
ICAgICAgICAgIG1faml0LmJveENlbGwoYmFzZUdQUiwgSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOwot
ICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoaW5kZXhHUFIsIEpTVmFsdWVSZWdzKGluZGV4R1BS
KSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1FeHRyYUFyZ3M7IGktLTspCi0g
ICAgICAgICAgICAgICAgbV9qaXQuYm94SW50MzIoYXJnR1BSc1tpXSwgSlNWYWx1ZVJlZ3MoYXJn
R1BSc1tpXSkpOwotICAgICAgICAgICAgY2FsbFNsb3dQYXRoKCk7Ci0gICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKCk7Ci0gICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBzdWNjZXNzLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0R1BSLCB0eXBlKTsK
KworICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBdG9taWNzU3RvcmUpIHsKKyAgICAgICAgICAg
IEVkZ2Ugb3BlcmFuZCA9IGFyZ0VkZ2VzWzBdOworICAgICAgICAgICAgc3dpdGNoIChvcGVyYW5k
LnVzZUtpbmQoKSkgeworICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgICAg
ICBtX2ppdC56ZXJvRXh0ZW5kMzJUb1dvcmQocmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAg
ICAgIHN0cmljdEludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBub2RlLCAiQmFkIHJlc3VsdCB0eXBlIik7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
b25zdGV4cHIgYm9vbCBjYW5TcGVjdWxhdGUgPSBmYWxzZTsKKyAgICAgICAgc2V0SW50VHlwZWRB
cnJheUxvYWRSZXN1bHQobm9kZSwgcmVzdWx0R1BSLCB0eXBlLCBjYW5TcGVjdWxhdGUpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGY1MWFkYTU3NjU1N2Y3YzEzOTU1ZTgwMGUxOTYw
YmVjNjA0MzNmZDguLjE4ODgyMTBlZjAzMGYxNjg2MTU5MjlhYzVmN2NiODlkOGQwODc1ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTQy
NzUsNyArNDI3NSwyNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIC8vIFdlIGhh
dmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4KICAg
ICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUobG93Q2VsbChiYXNlRWRnZSkpOwotICAgICAgICBz
ZXRJbnRUeXBlZEFycmF5TG9hZFJlc3VsdChyZXN1bHQsIHR5cGUpOworCisgICAgICAgIGlmICht
X25vZGUtPm9wKCkgPT0gQXRvbWljc1N0b3JlKSB7CisgICAgICAgICAgICBFZGdlIG9wZXJhbmQg
PSBhcmdFZGdlc1swXTsKKyAgICAgICAgICAgIHN3aXRjaCAob3BlcmFuZC51c2VLaW5kKCkpIHsK
KyAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAgICAgICAgc2V0SW50MzIobG93
SW50MzIob3BlcmFuZCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgICAgICBzZXRTdHJpY3RJbnQ1Mihsb3dTdHJpY3RJ
bnQ1MihvcGVyYW5kKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgICAgICBzZXREb3VibGUodG9JbnRlZ2VyT3JJbmZp
bml0eShsb3dEb3VibGUob3BlcmFuZCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgIkJhZCByZXN1bHQgdHlwZSIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0ZXhwciBi
b29sIGNhblNwZWN1bGF0ZSA9IGZhbHNlOworICAgICAgICBzZXRJbnRUeXBlZEFycmF5TG9hZFJl
c3VsdChyZXN1bHQsIHR5cGUsIGNhblNwZWN1bGF0ZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZUF0b21pY3NJc0xvY2tGcmVlKCkKQEAgLTUyNDcsNyArNTI2Nyw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBsb2FkRnJv
bUludFR5cGVkQXJyYXkocG9pbnRlciwgdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgdG8ga2VlcCBiYXNlIGFsaXZlIHNpbmNlIHRoYXQga2VlcHMgc3RvcmFnZSBhbGl2ZS4K
ICAgICAgICAgICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3RleHByIGJvb2wgY2FuU3BlY3VsYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQocmVzdWx0LCB0eXBlLCBjYW5TcGVjdWxhdGUp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMTY4
OTIsNyArMTY5MTIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAgICAgfQog
ICAgIAotICAgIHZvaWQgc2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQoTFZhbHVlIHJlc3VsdCwg
VHlwZWRBcnJheVR5cGUgdHlwZSwgYm9vbCBjYW5TcGVjdWxhdGUgPSBmYWxzZSkKKyAgICB2b2lk
IHNldEludFR5cGVkQXJyYXlMb2FkUmVzdWx0KExWYWx1ZSByZXN1bHQsIFR5cGVkQXJyYXlUeXBl
IHR5cGUsIGJvb2wgY2FuU3BlY3VsYXRlKQogICAgIHsKICAgICAgICAgaWYgKGVsZW1lbnRTaXpl
KHR5cGUpIDwgNCB8fCBpc1NpZ25lZCh0eXBlKSkgewogICAgICAgICAgICAgc2V0SW50MzIocmVz
dWx0KTsKQEAgLTE5NjM0LDYgKzE5NjU0LDE0IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIHJldHVybiBtX291dC5hZGRQdHIoaW1tdXRhYmxlQnV0dGVyZmx5LCBKU0ltbXV0YWJsZUJ1
dHRlcmZseTo6b2Zmc2V0T2ZEYXRhKCkpOwogICAgIH0KIAorICAgIExWYWx1ZSB0b0ludGVnZXJP
ckluZmluaXR5KExWYWx1ZSBkb3VibGVWYWx1ZSkKKyAgICB7CisgICAgICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eQorICAgICAgICAvLyAxLiBJ
ZiB2YWx1ZSBpcyBlaXRoZXIgb2YgKzAsIC0wLCBvciBOYU4sIHJldHVybiArMAorICAgICAgICAv
LyAyLiBPdGhlcndpc2UsIHJldHVybiB0cnVuYyh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG1fb3V0
LnNlbGVjdChtX291dC5kb3VibGVOb3RFcXVhbEFuZE9yZGVyZWQoZG91YmxlVmFsdWUsIG1fb3V0
LmRvdWJsZVplcm8pLCBtX291dC5kb3VibGVUcnVuYyhkb3VibGVWYWx1ZSksIG1fb3V0LmRvdWJs
ZVplcm8pOworICAgIH0KKwogICAgIHZvaWQgYWRkV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdl
dCkKICAgICB7CiAgICAgICAgIG1fZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2VzKCkuYWRkTGF6
aWx5KHRhcmdldCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGRiZTNlOTYyOWE1NWFiMTA2MzdlOWUzYjAzZDA2OGYyNDI3OTVmZmEuLmY0
OTNiNWJlNmNlMWM0ZjllODQ4Zjg4N2RjNjgyOTZhNWNmZjU4YmQgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIw
MjEtMDItMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBb
SlNDXSBBdG9taWNzLnN0b3JlIGluIERGRyAvIEZUTCBzaG91bGQgcmV0dXJuIFRvTnVtYmVyKGlu
cHV0KSB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxNDM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Mzk3MzI2ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICAqIHN0cmVzcy9hdG9taWMtc3RvcmUt
cmVzdWx0LXR5cGUtaW4tYWkuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9hdG9taWNzLXN0
b3JlLXJlc3VsdC1kb3VibGUtbmFuLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1kb3Vi
bGUtbmVnYXRpdmUtemVyby5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
ICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtZG91YmxlLmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAq
IHN0cmVzcy9hdG9taWNzLXN0b3JlLXJlc3VsdC1pbnQ1Mi5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgICogc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVzdWx0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKwogMjAyMS0wMi0wMyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZGF0ZSB0ZXN0MjYyCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9hdG9taWMtc3RvcmUtcmVzdWx0LXR5cGUtaW4tYWkuanMgYi9K
U1Rlc3RzL3N0cmVzcy9hdG9taWMtc3RvcmUtcmVzdWx0LXR5cGUtaW4tYWkuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTc5NTg3ZThiMmVmOGUzMTVhMDExYTYwOTYzMmZlZGQ0OGQ5MGNhZgotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pYy1zdG9yZS1yZXN1bHQtdHlwZS1pbi1haS5qcwpA
QCAtMCwwICsxLDUgQEAKKy8vQCBydW5EZWZhdWx0KCItLWZvcmNlRGVidWdnZXJCeXRlY29kZUdl
bmVyYXRpb249MSIsICItLXVzZUNvbmN1cnJlbnRKSVQ9MCIpCitsZXQgYSA9IG5ldyBVaW50OEFy
cmF5KDEpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgIEF0b21pY3Muc3Rv
cmUoYSwgMCwgaSk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hdG9taWNzLXN0b3Jl
LXJlc3VsdC1kb3VibGUtbmFuLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1
bHQtZG91YmxlLW5hbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWI3YzdkZGExNWJlMDRmOWNlYmI4ZmRmYzc4
NWQzNDRjMjBhMjFhCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1z
dG9yZS1yZXN1bHQtZG91YmxlLW5hbi5qcwpAQCAtMCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVu
Y3Rpb24gdGVzdChpOCwgZG91YmxlKSB7CisgICAgc2hvdWxkQmUoQXRvbWljcy5zdG9yZShpOCwg
MCwgZG91YmxlKSwgMCk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGk4ID0gbmV3IEludDhB
cnJheShuZXcgU2hhcmVkQXJyYXlCdWZmZXIoOCkpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkKKyAgICB0ZXN0KGk4LCBOYU4pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXRv
bWljcy1zdG9yZS1yZXN1bHQtZG91YmxlLW5lZ2F0aXZlLXplcm8uanMgYi9KU1Rlc3RzL3N0cmVz
cy9hdG9taWNzLXN0b3JlLXJlc3VsdC1kb3VibGUtbmVnYXRpdmUtemVyby5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDM4Y2E2MGQzYjE4YmE5YTlhM2ZmOGNlMDg2NzI3NzM4OWIzMTNhCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtZG91YmxlLW5lZ2F0aXZl
LXplcm8uanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBl
Y3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoaTgsIGRv
dWJsZSkgeworICAgIHNob3VsZEJlKE1hdGguc2lnbihBdG9taWNzLnN0b3JlKGk4LCAwLCBkb3Vi
bGUpKSwgMCk7Cit9Citub0lubGluZSh0ZXN0KTsKKwordmFyIGk4ID0gbmV3IEludDhBcnJheShu
ZXcgU2hhcmVkQXJyYXlCdWZmZXIoOCkpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkK
KyAgICB0ZXN0KGk4LCAtMC4wKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mt
c3RvcmUtcmVzdWx0LWRvdWJsZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVz
dWx0LWRvdWJsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzcwNjlmNDE3M2Q3OTk5NTlkNjliODJkZDdhNzgz
MjU1NGI4N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9y
ZS1yZXN1bHQtZG91YmxlLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0
ZXN0KGk4LCBkb3VibGUpIHsKKyAgICBzaG91bGRCZShBdG9taWNzLnN0b3JlKGk4LCAwLCBkb3Vi
bGUpLCBkb3VibGUpOworfQorbm9JbmxpbmUodGVzdCk7CisKK3ZhciBpOCA9IG5ldyBJbnQ4QXJy
YXkoMzIpOworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHRlc3QoaTgsIElu
ZmluaXR5KTsKKyAgICB0ZXN0KGk4LCAtSW5maW5pdHkpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtaW50NTIuanMgYi9KU1Rlc3RzL3N0cmVzcy9h
dG9taWNzLXN0b3JlLXJlc3VsdC1pbnQ1Mi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOTUyZDQ4NWNhMDc5YTVm
MWQ0ZDM1ZGFkOTNjNDViNDE2MDZkMWRjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvYXRvbWljcy1zdG9yZS1yZXN1bHQtaW50NTIuanMKQEAgLTAsMCArMSw4IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KwordmFyIGk4ID0gbmV3IEludDhBcnJheSgzMik7Citmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKQorICAgIHNob3VsZEJlKEF0b21pY3Muc3RvcmUoaTgsIDAsIDB4ZmZmZmZmZmYwMCArIGkp
LCAweGZmZmZmZmZmMDAgKyBpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mt
c3RvcmUtcmVzdWx0LmpzIGIvSlNUZXN0cy9zdHJlc3MvYXRvbWljcy1zdG9yZS1yZXN1bHQuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGNmODc0MzM2NzNjMTU4ZWE5ODU1MGQzMTEwNzczOTAyMzdmNGRlZQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2F0b21pY3Mtc3RvcmUtcmVzdWx0LmpzCkBA
IC0wLDAgKzEsOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBpOCA9IG5ldyBJbnQ4QXJyYXkoMzIpOworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZShBdG9taWNzLnN0b3JlKGk4
LCAwLCAweGZmMDAgKyBpKSwgMHhmZjAwICsgaSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>