<?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>102763</bug_id>
          
          <creation_ts>2012-11-19 20:52:54 -0800</creation_ts>
          <short_desc>[V8] Introduce constructorCallbackCustom()</short_desc>
          <delta_ts>2012-11-20 21:06:33 -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>WebCore JavaScript</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102770</dependson>
    
    <dependson>102806</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>771445</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-19 20:52:54 -0800</bug_when>
    <thetext>Currently custom constructors have the following code:

  v8::Handle&lt;v8::Value&gt; V8XXX::constructorCallback(const v8::Arguments&amp; args) {
    INC_STATS(&quot;DOM.XXX.Constructor&quot;);
    if (!args.IsConstructCall())
      return throwTypeError(&quot;DOM object constructor cannot be called as a function.&quot;, args.GetIsolate());
    if (ConstructorMode::current() == ConstructorMode::WrapExistingObject)
      return args.Holder();

    /* body of the constructor */;
  }

I would like to generate the common part in a code generator so that custom constructors can just write the body part. Specifically, I want to make the following change:

  // Generated automatically
  v8::Handle&lt;v8::Value&gt; V8XXX::constructorCallback(const v8::Arguments&amp; args) {
    INC_STATS(&quot;DOM.XXX.Constructor&quot;);
    if (!args.IsConstructCall())
      return throwTypeError(&quot;DOM object constructor cannot be called as a function.&quot;, args.GetIsolate());
    if (ConstructorMode::current() == ConstructorMode::WrapExistingObject)
      return args.Holder();

    V8XXX::constructorCallbackCustom(args);
  }

  // Written manually
  v8::Handle&lt;v8::Value&gt; V8XXX::constructorCallback(const v8::Arguments&amp; args) {
    /* body of the constructor */;
  }

By doing this, not only can we avoid duplicating the same logic in custom bindings, but also it enables us to insert the logic for [V8MeasureAs] into custom constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771584</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-19 23:39:36 -0800</bug_when>
    <thetext>Sounds good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772291</commentid>
    <comment_count>2</comment_count>
      <attachid>175301</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-20 16:48:22 -0800</bug_when>
    <thetext>Created attachment 175301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772298</commentid>
    <comment_count>3</comment_count>
      <attachid>175301</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-20 16:52:06 -0800</bug_when>
    <thetext>Comment on attachment 175301
Patch

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772303</commentid>
    <comment_count>4</comment_count>
      <attachid>175306</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-20 16:54:07 -0800</bug_when>
    <thetext>Created attachment 175306
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772411</commentid>
    <comment_count>5</comment_count>
      <attachid>175306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 20:03:50 -0800</bug_when>
    <thetext>Comment on attachment 175306
patch for landing

Rejecting attachment 175306 from commit-queue.

New failing tests:
fast/dom/call-a-constructor-as-a-function.html
Full output: http://queues.webkit.org/results/14933559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772436</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-20 21:03:39 -0800</bug_when>
    <thetext>Committed r135346: &lt;http://trac.webkit.org/changeset/135346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772438</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-20 21:06:33 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; New failing tests:
&gt; fast/dom/call-a-constructor-as-a-function.html
&gt; Full output: http://queues.webkit.org/results/14933559

Updated the test result and landed the patch. It looks like that &apos;.&apos; was missing in an error message of DataView&apos;s custom constructors:) Now we have &apos;.&apos; for all custom constructors because the same error message is generated by the code generator.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175301</attachid>
            <date>2012-11-20 16:48:22 -0800</date>
            <delta_ts>2012-11-20 16:54:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102763-20121121094610.patch</filename>
            <type>text/plain</type>
            <size>19721</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNhZDNkNTA5ZTc5ZDVh
ZmUyNTM3ZDQ1ZWYyNzhmNzJiMDRiNzk3ZS4uOThjNTVjNGIxOGRkZWM4OTY1NjRlYjdkN2YyYjU2
OTc1OTIwYjZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTExLTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEludHJvZHVj
ZSBjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBjdXN0b20gY29uc3RydWN0b3JzIGhhdmUg
dGhlIGZvbGxvd2luZyBjb2RlOgorCisgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
WFhYOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAg
ICAgICAgICAgIElOQ19TVEFUUygiRE9NLlhYWC5Db25zdHJ1Y3RvciIpOworICAgICAgICAgICAg
aWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1
bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChDb25zdHJ1Y3Rv
ck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkK
KyAgICAgICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICAgICAgICAgIC8qIGJv
ZHkgb2YgdGhlIGNvbnN0cnVjdG9yICovOworICAgICAgICAgIH0KKworICAgICAgICBUbyBhdm9p
ZCBkdXBsaWNhdGluZyB0aGUgc2FtZSBsb2dpYyBpbiBhbGwgY3VzdG9tIGNvbnN0cnVjdG9ycywK
KyAgICAgICAgdGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBnZW5lcmF0ZWQgY29kZSBhcyBmb2xsb3dz
OgorCisgICAgICAgICAgLy8gR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhYWFg6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykgeworICAgICAgICAgICAgSU5DX1NUQVRTKCJET00uWFhYLkNvbnN0cnVj
dG9yIik7CisgICAgICAgICAgICAke21heWJlT2JzZXJ2ZUZlYXR1cmV9ICAvLyBOZXdseSBzdXBw
b3J0ZWQgZm9yIGN1c3RvbSBjb25zdHJ1Y3RvcnMuCisgICAgICAgICAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCisgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9N
IG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJn
cy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVu
dCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAgICAgICAgICAg
ICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgICAgICAgICAgVjhYWFg6OmNvbnN0cnVjdG9y
Q2FsbGJhY2tDdXN0b20oYXJncyk7CisgICAgICAgICAgfQorCisgICAgICAgICAgLy8gV3JpdHRl
biBtYW51YWxseQorICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhYWDo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKSB7CisgICAgICAgICAgICAv
KiBib2R5IG9mIHRoZSBjb25zdHJ1Y3RvciAqLzsKKyAgICAgICAgICB9CisKKyAgICAgICAgTm8g
dGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAg
ICAoSGFzQ3VzdG9tQ29uc3RydWN0b3IpOgorICAgICAgICAoR2VuZXJhdGVDdXN0b21Db25zdHJ1
Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3RydWN0b3JD
b25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYktpdFBvaW50Ojpjb25zdHJ1
Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1MSHR0cFJl
cXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorCiAyMDEyLTExLTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEJ1aWxkIGZpeCBh
ZnRlciByMTM1MjE3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkMWQ1MmQwODgyOGZlYzIwZTliMDczOGYxNGQ1MmUxM2Vi
ZmE0ZThmLi5hYjYxNzIwODE2OTNjMmVmNTdlMjJhZDAwYjFiYTdjYzM0MWYxNzE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpA
QCAtNDE2LDYgKzQxNiwxMSBAQCBFTkQKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogRU5ECiAgICAgfQor
ICAgIGlmIChIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgeworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKK0VORAor
ICAgIH0KIAogICAgIG15IEBlbmFibGVkUGVyQ29udGV4dEF0dHJpYnV0ZXM7CiAgICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CkBAIC03NjEsNiAr
NzY2LDEzIEBAIHN1YiBJc0NvbnN0cnVjdGFibGUKICAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9OwogfQogCitzdWIgSGFzQ3VzdG9t
Q29uc3RydWN0b3IKK3sKKyAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CisKKyAgICByZXR1cm4g
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifTsK
K30KKwogc3ViIElzUmVhZG9ubHkKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC0x
OTc1LDYgKzE5ODcsMjcgQEAgRU5ECiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogfQog
CitzdWIgR2VuZXJhdGVDdXN0b21Db25zdHJ1Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGludGVy
ZmFjZSA9IHNoaWZ0OworCisgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1l
OworICAgIG15ICRtYXliZU9ic2VydmVGZWF0dXJlID0gR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRp
b24oJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pOworICAg
IHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2lu
dGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtpbnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIp
OworICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0KK0VORAorICAgIHB1c2goQGltcGxDb250ZW50
LCBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVhZGVyKCkpOworICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCk7CisKKyAgICByZXR1cm4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrQ3VzdG9tKGFyZ3MpOworfQorCitFTkQKK30KKwogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JD
YWxsYmFjawogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKQEAgLTI4NTcsOSArMjg5MCwx
MSBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJ9IC8vIG5hbWVzcGFjZSAk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbFxuXG4iKTsKIAotICAgIGlmICgkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9ICYmICEoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkpIHsKKyAgICBpZiAo
SGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkpIHsKKyAgICAgICAgR2VuZXJhdGVDdXN0
b21Db25zdHJ1Y3RvckNhbGxiYWNrKCRpbnRlcmZhY2UpOworICAgIH0gZWxzaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAg
R2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3Rv
cnN9WzBdLCAkaW50ZXJmYWNlKTsKLSAgICB9IGVsc2lmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAhKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0pKSB7CisgICAgfSBlbHNpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRpbnRlcmZhY2UpOwogICAgIH0gZWxzaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUoJGludGVyZmFjZSwgIkV2ZW50IikpIHsKICAg
ICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2soJGludGVyZmFjZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzhjODY1YzRmZTg4NWRlZDNjMzBm
NDM4N2U5Zjg3ZTYzMDFmYTMzNC4uMjZhN2ZjNzUzNGFiMmFlMTJhZGUyYmRlOWVjMjY3ZGQwMzZl
YjBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNjQsMTMgKzY0
LDExIEBAIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUg
VjhUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10KIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdEV2ZW50Q29uc3RydWN0b3IuQ29u
c3RydWN0b3IiKTsKLQogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iKTsKIAogICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJl
bnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKICAgICAgICAgcmV0
dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAg
IHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGU4YzVjNzc3NzE3MTZj
NTVmZGYwYWQyYjgzYWIxMTVkOGM0ZmQ2ODUuLmFiMGJiNmI2MjIxODFhOTYzZmE0ZDcxNDgxNGY4
MjM2MDJmMjAzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTUx
LDcgKzUxLDYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODoKIAogICAgIGlmIChDb25zdHJ1Y3Rv
ck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkK
ICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBjdXJyZW50RG9jdW1lbnQoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGUgZG9jdW1lbnQgaXMgYWRkZWQgdG8gdGhlIERPTSBOb2RlIG1hcC4gT3RoZXJ3
aXNlLCB0aGUgVGVzdE5hbWVkQ29uc3RydWN0b3IgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA2NjRiYjZmMWQwNzgzMmYwZDI3ZTFl
NTVlNzliYmUxNTgyZDdhNTk0Li5iMGZlZDljZDdlNzA0OWQ2OTBlYzA4NzBlMDI4YTM1ZjhjMDBh
NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBA
IC0xMDUsNyArMTA1LDYgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3QgdjgKIAogICAgIGlmIChDb25z
dHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09i
amVjdCkKICAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBpZiAoKGFyZ3MuTGVu
Z3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSkpKSkKICAg
ICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yMUNhbGxiYWNrKGFyZ3MpOwogICAgIGlmICgoYXJncy5M
ZW5ndGgoKSA9PSAxICYmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1swXSkp
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5
QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFy
cmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCBhNDQ4ZTMxMmVmZDYwMTFlMjY5NmM2NzRmMzFhMjhl
ZmJmNzE1ZmYwLi5mYmQ2Zjc2OTM3MmJkOGJlYjcwY2ZjM2Y3NDc2ZTcwYmJiYTJjMDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlC
dWZmZXJDdXN0b20uY3BwCkBAIC00NywxNiArNDcsOCBAQCBWOEFycmF5QnVmZmVyRGVhbGxvY2F0
aW9uT2JzZXJ2ZXIqIFY4QXJyYXlCdWZmZXJEZWFsbG9jYXRpb25PYnNlcnZlcjo6aW5zdGFuY2Uo
KQogfQogCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkFycmF5QnVmZmVyLkNvbnN0cnVj
dG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVk
IGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVj
dG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0
KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQogICAgIC8vIElmIHdlIHJldHVybiBh
IHByZXZpb3VzbHkgY29uc3RydWN0ZWQgQXJyYXlCdWZmZXIsCiAgICAgLy8gZS5nLiBmcm9tIHRo
ZSBjYWxsIHRvIEFycmF5QnVmZmVyVmlldy5idWZmZXIsIHRoaXMgY29kZSBpcyBjYWxsZWQKICAg
ICAvLyB3aXRoIGEgemVyby1sZW5ndGggYXJndW1lbnQgbGlzdC4gVGhlIFY4RE9NV3JhcHBlciB3
aWxsIHRoZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGRiNDY1MTYyZjU4YjAzNTRlNmNmZTFm
ZjVlMDM0ODcxMjc0NzUxZWIuLjZmNGZlMjhhNjdjMmFjZGE4YWU0ZWZlMzY0N2VkNmE0OTE2ZTA0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlv
Q29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcApAQCAtMzksMTYgKzM5LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLkF1ZGlvQ29udGV4dC5D
b250cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNhbm5vdCBi
ZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAo
Q29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3Rp
bmdPYmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gY3VycmVudERvY3VtZW50KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSk7CiAK
ICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCmluZGV4IDRkOGI3ODA2
MTFiMWMxOTRjOTdjOGM4OWExM2RhMDVkN2U1ZjgzNmIuLmNkNGY4ZmUzMmVmNTczODlhNmE3NjEz
ZTIyZGI4MTcxYjhhNDZlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwCkBAIC01MSwxNiArNTEsOCBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoQmxvYiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsCiAgICAgcmV0dXJuIFY4QmxvYjo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlv
bkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uQmxvYi5Db25zdHJ1Y3RvciIp
OwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1v
ZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAg
ICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgaWYgKCFhcmdz
Lkxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggODZmMjhmMTdmODBiYjE5YjdlNDVl
Yjc0ZGJhZDhhYjFkZTllYWViMi4uZTlhMGFhZDk2MTM2ZjFlNzY5OTgyM2YzM2E0YmVjMGNmNTM0
N2E0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
Rm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtMzksMTYgKzM5LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6Y29uc3Ry
dWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5Gb3JtRGF0YS5Db25zdHJ1
Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxl
ZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIGlmIChDb25zdHJ1
Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVj
dCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBIVE1MRm9ybUVsZW1lbnQq
IGZvcm0gPSAwOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiBWOEhUTUxGb3JtRWxlbWVu
dDo6SGFzSW5zdGFuY2UoYXJnc1swXSkpCiAgICAgICAgIGZvcm0gPSBWOEhUTUxGb3JtRWxlbWVu
dDo6dG9OYXRpdmUoYXJnc1swXS0+VG9PYmplY3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggNmNmMDc0
OTUwNDcyMjdkMWJiMzllOWYxZjFlZDU0YTgwODYzMGQxNS4uOWY0NWIyNmIxMWRjYWNkMzY0MTg2
NmQzNDU0ZDQ0Mzk3ZGRmNTMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtMzIsMTYgKzMyLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6
Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5EYXRhVmlldy5Db25z
dHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNh
bGxlZCBhcyBhIGZ1bmN0aW9uIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENvbnN0
cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQogICAgIGlmICghYXJncy5MZW5n
dGgoKSkgewogICAgICAgICAvLyBzZWUgY29uc3RydWN0V2ViR0xBcnJheSAtLSB3ZSBkb24ndCBz
ZWVtIHRvIGJlIGFibGUgdG8gZGlzdGluZ2lzaCBiZXR3ZWVuCiAgICAgICAgIC8vICduZXcgRGF0
YVZpZXcoKScgYW5kIHRoZSBjYWxsIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZWQgRGF0YVZp
ZXcgb2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDNhNDNkN2ZhYjBhZjBlOTcxNzE5YjM1
ODlhYjdiOGQ4ZjQwOTJkMDMuLjEwZGE3OGQ4MjRkYTM0OTljMjA2MzhhNTg0MWU0YTdhNDcyODcw
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVu
dENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTQxLDE1ICs0MSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5JbnRlbnQuQ29uc3RydWN0b3IiKTsKLQotICAg
IGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlv
bi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJy
ZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCi0gICAgICAgIHJl
dHVybiBhcmdzLkhvbGRlcigpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwog
ICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNzZiZTg5YTNlMDEwNzM1NTljN2U5MDA1YTRjZWQ4MmE1NGM2ZTU0NS4uMWZk
ZThkYWNkNTIxNGZhOWE1ODYyMDJmYTgzZThmMjFhZTlhNTcxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5u
ZWxDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ0LDE2ICs0NCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9y
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uTWVzc2FnZUNoYW5uZWwuQ29u
c3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBj
YWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29u
c3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdP
YmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAogICAg
IFJlZlB0cjxNZXNzYWdlQ2hhbm5lbD4gb2JqID0gTWVzc2FnZUNoYW5uZWw6OmNyZWF0ZShjb250
ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggOTY5MDg4OWE0ODlhZGQ2NWM1
M2Q1ZTQzOTgwZTZmZDUxNTQ0NDI1Ni4uNWIwOWFlZDkzZjdkYTYxZDM1MjdjNTYxMWFiZjgyZWFm
MzljZWUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTQzLDE2ICs0Myw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRp
b25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFU
UygiRE9NLk11dGF0aW9uT2JzZXJ2ZXIuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5J
c0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2Jq
ZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdl
dElzb2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29u
c3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOwotCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhy
b3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9p
bnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMTY2OTRlOTI3MjBiMDQzODE0NDc5MGE5NjY3MmM4YTlj
MTAzODcwYS4uNzkyMjViNDI5MTU3MmQ0ZWU4YTY5ZGY0MDc0NDJmOWMwNzRlZmZmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2Vi
S2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDE2ICszOSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uV2ViS2l0UG9pbnQuQ29uc3Ry
dWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxs
ZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAgICBpZiAoQ29uc3Ry
dWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmpl
Y3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCiAgICAgZmxvYXQgeCA9IDA7CiAg
ICAgZmxvYXQgeSA9IDA7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGIwMWZlMWE5MDkzMGJkZmFkZDhmMDQ5Y2ZhZGNm
MGJkYTVlNzdhODUuLjZiNTUxNzZjZmNmMjk0YzFiZTZkMDk4ZjU1YTdlYzkxMmNiMTYzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFhNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCkBAIC00MiwxNiArNDIsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1
ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9NLlhN
TEh0dHBSZXF1ZXN0LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RD
YWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1
Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkp
OwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9k
ZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQog
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175306</attachid>
            <date>2012-11-20 16:54:07 -0800</date>
            <delta_ts>2012-11-20 20:03:50 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-102763-20121121095155.patch</filename>
            <type>text/plain</type>
            <size>17175</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4MTVlNmUwNjVmMTA0
YTc1MWFjMDU3ZTMyNjk4N2QwMDBjZmNiNC4uYjgwMDFlYThmN2RmZGQ5MDc0MDI5M2M1NjI3OWI1
NWM5ZTczMTIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDEyLTExLTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEludHJvZHVj
ZSBjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjc2MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCisKKyAgICAgICAgQ3VycmVudGx5IGN1c3RvbSBjb25zdHJ1Y3RvcnMgaGF2ZSB0aGUg
Zm9sbG93aW5nIGNvZGU6CisKKyAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYWFg6
OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykgeworICAgICAg
ICAgICAgSU5DX1NUQVRTKCJET00uWFhYLkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICBpZiAo
IWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCisgICAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIiwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICAgICAgaWYgKENvbnN0cnVjdG9yTW9k
ZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQorICAg
ICAgICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKKworICAgICAgICAgICAgLyogYm9keSBv
ZiB0aGUgY29uc3RydWN0b3IgKi87CisgICAgICAgICAgfQorCisgICAgICAgIFRvIGF2b2lkIGR1
cGxpY2F0aW5nIHRoZSBzYW1lIGxvZ2ljIGluIGFsbCBjdXN0b20gY29uc3RydWN0b3JzLAorICAg
ICAgICB0aGlzIHBhdGNoIGNoYW5nZXMgdGhlIGdlbmVyYXRlZCBjb2RlIGFzIGZvbGxvd3M6CisK
KyAgICAgICAgICAvLyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseQorICAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFhYWDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKSB7CisgICAgICAgICAgICBJTkNfU1RBVFMoIkRPTS5YWFguQ29uc3RydWN0b3Ii
KTsKKyAgICAgICAgICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0gIC8vIE5ld2x5IHN1cHBvcnRl
ZCBmb3IgY3VzdG9tIGNvbnN0cnVjdG9ycy4KKyAgICAgICAgICAgIGlmICghYXJncy5Jc0NvbnN0
cnVjdENhbGwoKSkKKyAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2Jq
ZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdl
dElzb2xhdGUoKSk7CisgICAgICAgICAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkg
PT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgICAgICAgIHJl
dHVybiBhcmdzLkhvbGRlcigpOworCisgICAgICAgICAgICBWOFhYWDo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbShhcmdzKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICAvLyBXcml0dGVuIG1h
bnVhbGx5CisgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WFhYOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpIHsKKyAgICAgICAgICAgIC8qIGJv
ZHkgb2YgdGhlIGNvbnN0cnVjdG9yICovOworICAgICAgICAgIH0KKworICAgICAgICBObyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAgIChI
YXNDdXN0b21Db25zdHJ1Y3Rvcik6CisgICAgICAgIChHZW5lcmF0ZUN1c3RvbUNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JDYWxsYmFj
ayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9y
Q2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVz
dDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisKIDIwMTItMTEtMjAgIEpvc2h1YSBCZWxs
ICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IE1vdmUgY29udHJv
bCBvZiB0cmFuc2FjdGlvbiBjb21wbGV0aW9uIHRvIGZyb250IGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA0ZjIyOTY5
NzUyMWUzYmUzOTg5NjYxMzk5MDM1MWE4NDc5YTAyMTJlLi5jOWQ5MGFhNDM0YmVjNjJlN2U1Yjlh
Njc0NmVjYWU2MzhlZmFiZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNDE2LDYgKzQxNiwxMSBAQCBFTkQKICAgICBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYpOwogRU5ECiAgICAgfQorICAgIGlmIChIYXNDdXN0b21Db25zdHJ1Y3Rvcigk
aW50ZXJmYWNlKSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CisgICAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmKTsKK0VORAorICAgIH0KIAogICAgIG15IEBlbmFibGVkUGVyQ29u
dGV4dEF0dHJpYnV0ZXM7CiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2Ut
PmF0dHJpYnV0ZXN9KSB7CkBAIC03NjEsNiArNzY2LDEzIEBAIHN1YiBJc0NvbnN0cnVjdGFibGUK
ICAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29u
c3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0
b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1w
bGF0ZSJ9OwogfQogCitzdWIgSGFzQ3VzdG9tQ29uc3RydWN0b3IKK3sKKyAgICBteSAkaW50ZXJm
YWNlID0gc2hpZnQ7CisKKyAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifTsKK30KKwogc3ViIElzUmVhZG9ubHkKIHsKICAgICBt
eSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC0xOTcwLDYgKzE5ODIsMjcgQEAgRU5ECiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiIpOwogfQogCitzdWIgR2VuZXJhdGVDdXN0b21Db25zdHJ1Y3Rv
ckNhbGxiYWNrCit7CisgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OworCisgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT5uYW1lOworICAgIG15ICRtYXliZU9ic2VydmVGZWF0dXJl
ID0gR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlY4TWVhc3VyZUFzIn0pOworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Cit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjgke2ludGVyZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uJHtp
bnRlcmZhY2VOYW1lfS5Db25zdHJ1Y3RvciIpOworICAgICR7bWF5YmVPYnNlcnZlRmVhdHVyZX0K
K0VORAorICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVhZGVyKCkp
OworICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisKKyAgICByZXR1cm4gVjgke2ludGVy
ZmFjZU5hbWV9Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGFyZ3MpOworfQorCitFTkQKK30K
Kwogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjawogewogICAgIG15ICRpbnRlcmZhY2Ug
PSBzaGlmdDsKQEAgLTI4NTIsOSArMjg4NSwxMSBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250
ZW50RGVjbHMsICJ9IC8vIG5hbWVzcGFjZSAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbFxuXG4i
KTsKIAotICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25z
dHJ1Y3RvciJ9ICYmICEoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9t
Q29uc3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q29uc3RydWN0b3IifSkpIHsKKyAgICBpZiAoSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFj
ZSkpIHsKKyAgICAgICAgR2VuZXJhdGVDdXN0b21Db25zdHJ1Y3RvckNhbGxiYWNrKCRpbnRlcmZh
Y2UpOworICAgIH0gZWxzaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1l
ZENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJh
Y2soQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9WzBdLCAkaW50ZXJmYWNlKTsKLSAgICB9IGVs
c2lmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAh
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0g
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVjdG9yIn0p
KSB7CisgICAgfSBlbHNpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0
cnVjdG9yIn0pIHsKICAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxiYWNrKCRpbnRlcmZh
Y2UpOwogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVGVtcGxhdGUo
JGludGVyZmFjZSwgIkV2ZW50IikpIHsKICAgICAgICAgR2VuZXJhdGVFdmVudENvbnN0cnVjdG9y
Q2FsbGJhY2soJGludGVyZmFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggYTQ0OGUzMTJlZmQ2
MDExZTI2OTZjNjc0ZjMxYTI4ZWZiZjcxNWZmMC4uZmJkNmY3NjkzNzJiZDhiZWI3MGNmYzNmNzQ3
NmU3MGJiYmEyYzAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNDcsMTYgKzQ3LDggQEAgVjhB
cnJheUJ1ZmZlckRlYWxsb2NhdGlvbk9ic2VydmVyKiBWOEFycmF5QnVmZmVyRGVhbGxvY2F0aW9u
T2JzZXJ2ZXI6Omluc3RhbmNlKCkKIH0KIAogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJh
eUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5B
cnJheUJ1ZmZlci5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2Fs
bCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0
b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
LQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6
OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KICAg
ICAvLyBJZiB3ZSByZXR1cm4gYSBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIEFycmF5QnVmZmVyLAog
ICAgIC8vIGUuZy4gZnJvbSB0aGUgY2FsbCB0byBBcnJheUJ1ZmZlclZpZXcuYnVmZmVyLCB0aGlz
IGNvZGUgaXMgY2FsbGVkCiAgICAgLy8gd2l0aCBhIHplcm8tbGVuZ3RoIGFyZ3VtZW50IGxpc3Qu
IFRoZSBWOERPTVdyYXBwZXIgd2lsbCB0aGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCBkYjQ2
NTE2MmY1OGIwMzU0ZTZjZmUxZmY1ZTAzNDg3MTI3NDc1MWViLi42ZjRmZTI4YTY3YzJhY2RhOGFl
NGVmZTM2NDdlZDZhNDkxNmUwNDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTM5LDE2ICsz
OSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICBJTkNfU1RBVFMo
IkRPTS5BdWRpb0NvbnRleHQuQ29udHJ1Y3RvciIpOwotCi0gICAgaWYgKCFhcmdzLklzQ29uc3Ry
dWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkF1ZGlvQ29udGV4dCBj
b25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29s
YXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVj
dG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIo
KTsKLQogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGN1cnJlbnREb2N1bWVudChCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCkpOwogCiAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gYXVkaW9Db250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9t
LmNwcAppbmRleCA0ZDhiNzgwNjExYjFjMTk0Yzk3YzhjODlhMTNkYTA1ZDdlNWY4MzZiLi5jZDRm
OGZlMzJlZjU3Mzg5YTZhNzYxM2UyMmRiODE3MWI4YTQ2ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtNTEsMTYgKzUx
LDggQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEJsb2IqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LAogICAgIHJldHVybiBWOEJsb2I6OmNyZWF0ZVdy
YXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LkJsb2IuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNh
bm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0KLSAg
ICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFw
RXhpc3RpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKIAogICAgIGlmICghYXJncy5MZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IDg2
ZjI4ZjE3ZjgwYmIxOWI3ZTQ1ZWI3NGRiYWQ4YWIxZGU5ZWFlYjIuLmU5YTBhYWQ5NjEzNmYxZTc2
OTk4MjNmMzNhNGJlYzBjZjUzNDdhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTM5LDE2ICsz
OSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJE
T00uRm9ybURhdGEuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENh
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVj
dG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7
Ci0KLSAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2Rl
OjpXcmFwRXhpc3RpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBhcmdzLkhvbGRlcigpOwotCiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gMDsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAg
JiYgVjhIVE1MRm9ybUVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0pKQogICAgICAgICBmb3Jt
ID0gVjhIVE1MRm9ybUVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3NbMF0tPlRvT2JqZWN0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0
b20uY3BwCmluZGV4IDZjZjA3NDk1MDQ3MjI3ZDFiYjM5ZTlmMWYxZWQ1NGE4MDg2MzBkMTUuLjlm
NDViMjZiMTFkY2FjZDM2NDE4NjZkMzQ1NGQ0NDM5N2RkZjUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAg
LTMyLDE2ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRT
KCJET00uRGF0YVZpZXcuQ29uc3RydWN0b3IiKTsKLQotICAgIGlmICghYXJncy5Jc0NvbnN0cnVj
dENhbGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0
cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbiIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1v
ZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0K
ICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpIHsKICAgICAgICAgLy8gc2VlIGNvbnN0cnVjdFdlYkdM
QXJyYXkgLS0gd2UgZG9uJ3Qgc2VlbSB0byBiZSBhYmxlIHRvIGRpc3Rpbmdpc2ggYmV0d2Vlbgog
ICAgICAgICAvLyAnbmV3IERhdGFWaWV3KCknIGFuZCB0aGUgY2FsbCB1c2VkIHRvIGNvbnN0cnVj
dCB0aGUgY2FjaGVkIERhdGFWaWV3IG9iamVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudENvbnN0cnVjdG9yLmNwcAppbmRleCAzYTQz
ZDdmYWIwYWYwZTk3MTcxOWIzNTg5YWI3YjhkOGY0MDkyZDAzLi4xMGRhNzhkODI0ZGEzNDk5YzIw
NjM4YTU4NDFlNGE3YTQ3Mjg3MDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnRlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q29uc3RydWN0b3IuY3BwCkBAIC00MSwxNSArNDEs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
dGVudDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgSU5DX1NUQVRTKCJET00uSW50ZW50LkNv
bnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUg
Y2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENv
bnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5n
T2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAxKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbENv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3Nh
Z2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCmluZGV4IDc2YmU4OWEzZTAxMDczNTU5YzdlOTAwNWE0
Y2VkODJhNTRjNmU1NDUuLjFmZGU4ZGFjZDUyMTRmYTlhNTg2MjAyZmE4M2U4ZjIxYWU5YTU3MWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VD
aGFubmVsQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ29uc3RydWN0b3IuY3BwCkBAIC00NCwxNiArNDQsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VD
aGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
Lk1lc3NhZ2VDaGFubmVsLkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1
Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRl
KCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9y
TW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsK
LQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CiAKICAgICBSZWZQdHI8TWVzc2FnZUNoYW5uZWw+IG9iaiA9IE1lc3NhZ2VD
aGFubmVsOjpjcmVhdGUoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4
IDk2OTA4ODlhNDg5YWRkNjVjNTNkNWU0Mzk4MGU2ZmQ1MTU0NDQyNTYuLjViMDlhZWQ5M2Y3ZGE2
MWQzNTI3YzU2MTFhYmY4MmVhZjM5Y2VlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3Bw
CkBAIC00MywxNiArNDMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2Jz
ZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKLSAgICBJTkNfU1RBVFMoIkRPTS5NdXRhdGlvbk9ic2VydmVyLkNvbnN0cnVjdG9yIik7
Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RDYWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEg
ZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkpOwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9k
ZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9kZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAg
ICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDE2Njk0ZTkyNzIwYjA0
MzgxNDQ3OTBhOTY2NzJjOGE5YzEwMzg3MGEuLjc5MjI1YjQyOTE1NzJkNGVlOGE2OWRmNDA3NDQy
ZjljMDc0ZWZmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwCkBAIC0zOSwxNiArMzks
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdl
YktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRQb2ludDo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIElOQ19TVEFUUygiRE9N
LldlYktpdFBvaW50LkNvbnN0cnVjdG9yIik7Ci0KLSAgICBpZiAoIWFyZ3MuSXNDb25zdHJ1Y3RD
YWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1
Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uIiwgYXJncy5HZXRJc29sYXRlKCkp
OwotCi0gICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9k
ZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKLQog
ICAgIGZsb2F0IHggPSAwOwogICAgIGZsb2F0IHkgPSAwOwogICAgIGlmIChhcmdzLkxlbmd0aCgp
ID4gMSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
WE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAppbmRleCBiMDFmZTFhOTA5
MzBiZGZhZGQ4ZjA0OWNmYWRjZjBiZGE1ZTc3YTg1Li42YjU1MTc2Y2ZjZjI5NGMxYmU2ZDA5OGY1
NWE3ZWM5MTJjYjE2M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcApAQCAt
NDIsMTYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNv
bnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKLSAg
ICBJTkNfU1RBVFMoIkRPTS5YTUxIdHRwUmVxdWVzdC5Db25zdHJ1Y3RvciIpOwotCi0gICAgaWYg
KCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
IkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1cnJlbnQo
KSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAgcmV0dXJu
IGFyZ3MuSG9sZGVyKCk7Ci0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0g
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBzZWN1cml0eU9yaWdpbjsK
</data>
<flag name="commit-queue"
          id="190715"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>