<?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>73342</bug_id>
          
          <creation_ts>2011-11-29 11:17:21 -0800</creation_ts>
          <short_desc>Add support for [ClassMethod] to CodeGeneratorJS.pm</short_desc>
          <delta_ts>2011-11-29 13:58:29 -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>DOM</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>
          
          <blocked>72998</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>510932</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-29 11:17:21 -0800</bug_when>
    <thetext>Add support for [ClassMethod] to CodeGeneratorJS.pm

For example:

interface Foo {
  [ClassMethod] DOMString test(in DOMString value) ;
}

generates code that allows us to write the following in JS.

Foo.test(&apos;Hi&apos;);  // return a string</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510984</commentid>
    <comment_count>1</comment_count>
      <attachid>117017</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-29 12:12:05 -0800</bug_when>
    <thetext>Created attachment 117017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511090</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2011-11-29 13:58:29 -0800</bug_when>
    <thetext>Committed r101421: &lt;http://trac.webkit.org/changeset/101421&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117017</attachid>
            <date>2011-11-29 12:12:05 -0800</date>
            <delta_ts>2011-11-29 13:19:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73342-20111129121204.patch</filename>
            <type>text/plain</type>
            <size>22432</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJiY2Q3Mzk3YmZlNmVm
NzE1MzliMzNmNzY4MjI1Y2IxZjAxNDc1Yi4uZDM3ODAxNmMyNjZjMTMyYWRlYjI2ODJlOThhMGUy
NmQzOWM0NTc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTExLTI5ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IFtDbGFzc01ldGhvZF0gdG8gQ29kZUdlbmVyYXRvckpTLnBtCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM0MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgbWV0aG9kIGlzIGFubm90YXRlZCB3aXRo
IFtDbGFzc01ldGhvZF0gaXQgd2lsbCBiZWNvbWUgYSBtZXRob2Qgb24gdGhlIEpTIGNvbnN0cnVj
dG9yIG9iamVjdCBhbmQgaXQgd2lsbAorICAgICAgICBjYWxsIGEgc3RhdGljIGZ1bmN0aW9uIG9u
IHRoZSBDKysgY2xhc3MuIAorCisgICAgICAgIFRoaXMgd2FzIHByZXZpb3VzbHkgb25seSBpbXBs
ZW1lbnRlZCBpbiBDb2RlR2VuZXJhdG9yVjgucG0gc28gdGhpcyBicmluZ3MgSlNDIHVwIHRvIHBh
ci4KKworICAgICAgICBObyBuZXcgdGVzdHM6IENvdmVyZWQgYnkgYmluZGluZ3Mvc2NyaXB0cy90
ZXN0LworCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06Cisg
ICAgICAgIChHZXRGdW5jdGlvbk5hbWUpOiBSZWZhY3RvciB0byByZWR1Y2UgY29kZSBkdXBsaWNh
dGlvbi4KKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKTogRGl0dG8uCisgICAgICAgIChHZW5lcmF0
ZU92ZXJsb2FkZWRGdW5jdGlvbik6IFRoaXMgbm93IGhhbmRsZXMgYm90aCBwcm90b3R5cGUgZnVu
Y3Rpb25zIGFuZCBjb25zdHJ1Y3RvciBmdW5jdGlvbnMuCisgICAgICAgIChHZW5lcmF0ZUltcGxl
bWVudGF0aW9uKTogRGVmaW5lIGNsYXNzIG1ldGhvZHMgdG9vLiAKKyAgICAgICAgKEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrKTogR2VuZXJhdGUgdGhlIHJpZ2h0IGZ1bmN0aW9uIGFjY2VzcyBzdHJp
bmcuCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKTogU1ZHIHBy
b3BlcnRpZXMgYXJlIG5vdCBzdGF0aWMgbWV0aG9kcy4KKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWZpbml0aW9uKTogRm9yIGNsYXNzZXMgdGhhdCBoYXZlIHN0YXRpYyBtZXRob2RzIHdl
IG1heSBub3cgcmV0dXJuIGZ1bmN0aW9uIHByb3BlcnRpZXMuCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NN
ZXRob2QpOiBOb3cgY2FsbHMgYSBzdGF0aWMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwpOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisKIDIw
MTEtMTEtMjMgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBC
aW5kaW5nIENvZGVHZW5lcmF0b3JzIGRvbid0IHN1cHBvcnQgQ29uZGl0aW9uYWw9IG9uIGNvbnN0
YW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQppbmRleCBjYWMzNTBiNDk0MTUzMWI4NmE3NDJhODcyYmIyNWMyMzA4ZjRiNjk4Li4z
YTg0MDU1MGM1OTE2MmJmNWRkMGFkNWYxNTAyYTE2MjBmMzhhNDZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjQ2LDYg
KzY0NiwxNCBAQCBteSAldXNlc1RvSlNOZXdseUNyZWF0ZWQgPSAoCiAgICAgIlRvdWNoTGlzdCIg
PT4gMQogKTsKIAorc3ViIEdldEZ1bmN0aW9uTmFtZQoreworICAgIG15ICgkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pID0gQF87CisgICAgbXkgJGlzU3RhdGljID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9OworICAgIG15ICRraW5kID0gJGlz
U3RhdGljID8gIkNvbnN0cnVjdG9yIiA6ICJQcm90b3R5cGUiOworICAgIHJldHVybiAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICRraW5kIC4gIkZ1bmN0aW9uIiAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKK30K
Kwogc3ViIEdlbmVyYXRlSGVhZGVyCiB7CiAgICAgbXkgJG9iamVjdCA9IHNoaWZ0OwpAQCAtMTA4
MCw3ICsxMDg4LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlv
bi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAg
ICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgk
Y2xhc3NOYW1lKSAuICJQcm90b3R5cGVGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNm
aXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0xMjY4LDcgKzEyNzYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvblBhcmFtZXRlcnND
aGVjawogICAgIHJldHVybiAoam9pbigiIHx8ICIsIEBvckV4cHJlc3Npb24pLCBAbmVlZGVkQXJn
dW1lbnRzKTsKIH0KIAotc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZFByb3RvdHlwZUZ1bmN0aW9uCitz
dWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb24KIHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlm
dDsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKQEAgLTEyODAsNyArMTI4OCw5IEBAIHN1YiBH
ZW5lcmF0ZU92ZXJsb2FkZWRQcm90b3R5cGVGdW5jdGlvbgogICAgICMgb3ZlcmxvYWQgaXMgYXBw
bGljYWJsZSwgcHJlY2VkZW5jZSBpcyBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIG9mCiAg
ICAgIyBkZWNsYXJhdGlvbiBpbiB0aGUgSURMLgogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJq
cyR7aW1wbENsYXNzTmFtZX1Qcm90b3R5cGVGdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgbXkgJGlzU3RhdGljID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9
OworICAgIG15ICRraW5kID0gJGlzU3RhdGljID8gIkNvbnN0cnVjdG9yIiA6ICJQcm90b3R5cGUi
OworICAgIG15ICRmdW5jdGlvbk5hbWUgPSAianMke2ltcGxDbGFzc05hbWV9JHtraW5kfUZ1bmN0
aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCAke2Z1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBleGVjKVxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsIDw8RU5EKTsKQEAgLTEzNzMsNiArMTM4MywzMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGRhdGFOb2RlLT5mdW5jdGlvbnN9KSB7CisgICAgICAgICAgICBuZXh0
IHVubGVzcyAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFz
c01ldGhvZCJ9KTsKKyAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOworICAgICAgICAgICAgbXkgJG5h
bWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIHB1c2goQGhhc2hL
ZXlzLCAkbmFtZSk7CisKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlv
bk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1
ZTEsICRmdW5jdGlvbk5hbWUpOworCisgICAgICAgICAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7
JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRu
dW1QYXJhbWV0ZXJzKTsKKworICAgICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7CisgICAgICAg
ICAgICBwdXNoKEBzcGVjaWFscywgIkRvbnREZWxldGUiKSB1bmxlc3MgJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEZWxldGFibGUifTsKKyAgICAgICAgICAgIHB1
c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CisgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywg
IkZ1bmN0aW9uIik7CisgICAgICAgICAgICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/
IGpvaW4oIiB8ICIsIEBzcGVjaWFscykgOiAiMCI7CisgICAgICAgICAgICBwdXNoKEBoYXNoU3Bl
Y2lhbHMsICRzcGVjaWFsKTsKKworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OworICAg
ICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAgICAgICRjb25kaXRpb25h
bHN7JG5hbWV9ID0gJGNvbmRpdGlvbmFsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAg
ICAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGhhc2hOYW1lLCAkaGFzaFNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNp
YWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcQGhhc2hWYWx1ZTEsIFxA
aGFzaFZhbHVlMiwKQEAgLTE0MTAsMTIgKzE0NDUsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICB9CiAKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGF0YU5vZGUtPmZ1
bmN0aW9uc30pIHsKKyAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9KTsKICAgICAgICAgbmV4dCBpZiAkZnVuY3Rp
b24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAg
ICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1
c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgbXkgJHZhbHVlID0gJGNvZGVHZW5lcmF0
b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkgLiAiUHJvdG90eXBlRnVuY3Rpb24iIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwotICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAk
dmFsdWUpOworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFz
c05hbWUsICRmdW5jdGlvbik7CisgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5h
bWUpOwogCiAgICAgICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRl
cnN9OwogICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkbnVtUGFyYW1ldGVycyk7CkBAIC0xOTcz
LDEyICsyMDA5LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGZvcmVh
Y2ggbXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAg
QWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKIAot
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0
KCRjbGFzc05hbWUpIC4gIlByb3RvdHlwZUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKICAgICAgICAgICAgIG15ICRpc0N1
c3RvbSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
In0gfHwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NDdXN0
b20ifTsKICAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkZnVuY3Rpb24tPntvdmVybG9h
ZHN9ICYmIEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogCiAgICAgICAgICAgICBuZXh0
IGlmICRpc0N1c3RvbSAmJiAkaXNPdmVybG9hZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ID4gMTsKIAorICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFt
ZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworCiAgICAgICAgICAgICBpZiAoISRpc0N1c3RvbSAm
JiAkaXNPdmVybG9hZGVkKSB7CiAgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSBudW1iZXIgdG8g
YW4gb3ZlcmxvYWRlZCBtZXRob2QncyBuYW1lIHRvIG1ha2UgaXQgdW5pcXVlOgogICAgICAgICAg
ICAgICAgICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb25OYW1lIC4gJGZ1bmN0aW9uLT57b3Zlcmxv
YWRJbmRleH07CkBAIC0yMDAwLDYgKzIwMzcsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsK
IAorICAgICAgICAgICAgbXkgJGlzU3RhdGljID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9OworCiAgICAgICAgICAgICBpZiAoJGludGVy
ZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAkY2xhc3NOYW1lKiBjYXN0ZWRUaGlzID0gdG9KU0RPTVdpbmRvdyhleGVjLT5o
b3N0VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTtcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcylcbiIpOwpAQCAtMjAwOCwy
NSArMjA0NywyNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICRjbGFzc05hbWUqIGNhc3RlZFRoaXMgPSB0byR7Y2xh
c3NOYW1lfShleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzT2JqZWN0KGV4ZWMpKTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcylc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIH0gZWxzaWYgKCEkaXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTtc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghdGhpc1Zh
bHVlLmluaGVyaXRzKCYke2NsYXNzTmFtZX06OnNfaW5mbykpXG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkY2xhc3NO
YW1lKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpO1xuIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICYke2NsYXNzTmFt
ZX06OnNfaW5mbyk7XG4iKTsKIAotICAgICAgICAgICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNoZWNrRG9tYWluU2VjdXJpdHkifSAmJiAKLSAgICAgICAgICAgICAgICAh
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrRG9t
YWluU2VjdXJpdHkifSkgeworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmJHtjbGFzc05hbWV9OjpzX2luZm8p
O1xuIikgdW5sZXNzICgkaXNTdGF0aWMpOworCisgICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2hlY2tEb21haW5TZWN1cml0eSJ9IGFuZAorICAgICAgICAg
ICAgICAgICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvTm90
Q2hlY2tEb21haW5TZWN1cml0eSJ9IGFuZAorICAgICAgICAgICAgICAgICEkaXNTdGF0aWMpIHsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhc3RlZFRoaXMt
PmFsbG93c0FjY2Vzc0Zyb20oZXhlYykpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtc
biIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT4iIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIihleGVjKSk7
XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUg
LiAiKGV4ZWMpKTtcbiIpIHVubGVzcyAoJGlzU3RhdGljKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxUeXBlKiBpbXAg
PSBzdGF0aWNfY2FzdDwkaW1wbFR5cGUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAkaW1wbFR5cGUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsVHlw
ZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKSB1bmxlc3MgKCRpc1N0YXRpYyk7CisgICAgICAg
ICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUgYW5kICEkaXNTdGF0aWMpIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcC0+cm9sZSgpID09IEFu
aW1WYWxSb2xlKSB7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CkBAIC0yMDQxLDcg
KzIwODIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlNWR0NoZWNrU2VjdXJpdHlEb2N1bWVudCJ9KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiU1ZHQ2hlY2tTZWN1cml0eURvY3VtZW50In0gYW5kICEkaXNTdGF0aWMpIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjaGVja05vZGVTZWN1
cml0eShleGVjLCBpbXAtPmdldFNWR0RvY3VtZW50KCIgLiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4
Y2VwdGlvbnN9ID8gImVjIiA6ICIiKSAuIikpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmlu
ZGluZy5oIn0gPSAxOwpAQCAtMjA2Miw3ICsyMTAzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KIAogICAgICAgICAgICAgaWYgKCEkaXNDdXN0b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAk
ZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA9PSBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319KSB7
CiAgICAgICAgICAgICAgICAgIyBHZW5lcmF0ZSBhIGZ1bmN0aW9uIGRpc3BhdGNoaW5nIGNhbGwg
dG8gdGhlIHJlc3Qgb2YgdGhlIG92ZXJsb2Fkcy4KLSAgICAgICAgICAgICAgICBHZW5lcmF0ZU92
ZXJsb2FkZWRQcm90b3R5cGVGdW5jdGlvbigkZnVuY3Rpb24sICRkYXRhTm9kZSwgJGltcGxDbGFz
c05hbWUpOworICAgICAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKCRmdW5j
dGlvbiwgJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5cbiIpIGlmICRjb25kaXRpb25hbDsK
QEAgLTIyOTEsMTAgKzIzMzIsMTkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAg
bXkgJHBhcmFtSW5kZXggPSAwOwogICAgIG15ICRhcmdzSW5kZXggPSAwOwogICAgIG15ICRoYXNP
cHRpb25hbEFyZ3VtZW50cyA9IDA7CisgICAgbXkgJGlzU3RhdGljID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9OwogCi0gICAgbXkgJGZ1
bmN0aW9uU3RyaW5nID0gKCgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgYW5kICEkc3Zn
TGlzdFByb3BlcnR5VHlwZSkgPyAicG9kSW1wLiIgOiAiaW1wLT4iKSAuICRmdW5jdGlvbkltcGxl
bWVudGF0aW9uTmFtZSAuICIoIjsKKyAgICBteSAkZnVuY3Rpb25CYXNlID0gIiI7CisgICAgaWYg
KCRpc1N0YXRpYykgeworICAgICAgICAkZnVuY3Rpb25CYXNlID0gIiR7aW1wbENsYXNzTmFtZX06
OiI7CisgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGFuZCAhJHN2
Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKKyAgICAgICAgJGZ1bmN0aW9uQmFzZSA9ICJwb2RJbXAuIjsK
KyAgICB9IGVsc2UgeworICAgICAgICAkZnVuY3Rpb25CYXNlID0gImltcC0+IjsKKyAgICB9Cisg
ICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5jdGlvbkJhc2UkZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWUoIjsKIAotICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgeworICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmci
fSBhbmQgISRpc1N0YXRpYykgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVm
UHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50
cyhleGVjLCAkbnVtUGFyYW1ldGVycykpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBzaXplX3QgbWF4U3RhY2tTaXplID0gaW1wLT5zaG91bGRDYXB0dXJlRnVsbFN0YWNr
VHJhY2UoKSA/IFNjcmlwdENhbGxTdGFjazo6bWF4Q2FsbFN0YWNrU2l6ZVRvQ2FwdHVyZSA6IDE7
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjxTY3JpcHRDYWxs
U3RhY2s+IGNhbGxTdGFjayhjcmVhdGVTY3JpcHRDYWxsU3RhY2soZXhlYywgbWF4U3RhY2tTaXpl
KSk7XG4iKTsKQEAgLTI2MjMsMTEgKzI2NzMsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoKQogICAgIH0KICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIikiOwogCisg
ICAgbXkgJGlzU3RhdGljID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDbGFzc01ldGhvZCJ9OworCiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBl
IGVxICJ2b2lkIikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIkZnVu
Y3Rpb25TdHJpbmc7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNl
cHRpb25zfTsKIAotICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgeworICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5VHlwZSBhbmQgISRpc1N0YXRpYykgewogICAgICAgICAgICAgaWYgKEB7JGZ1
bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAkaW5kZW50IC4gImlmICghZWMpXG4iKTsgCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIGltcC0+Y29tbWl0Q2hhbmdlKCk7XG4iKTsKQEAg
LTMyNzcsMTQgKzMzMjksMjQgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKCR7bnVtYmVyT2Zjb25zdHJ1
Y3RQYXJhbWV0ZXJzfSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTtcbiIpIGlm
ICRudW1iZXJPZmNvbnN0cnVjdFBhcmFtZXRlcnM7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
fVxuXG4iKTsKIAorICAgIG15ICRoYXNTdGF0aWNGdW5jdGlvbnMgPSAwOworICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAeyRkYXRhTm9kZS0+ZnVuY3Rpb25zfSkgeworICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDbGFzc01ldGhvZCJ9KSB7
CisgICAgICAgICAgICAkaGFzU3RhdGljRnVuY3Rpb25zID0gMTsKKyAgICAgICAgICAgIGxhc3Q7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBteSAka2luZCA9ICRoYXNTdGF0aWNGdW5jdGlvbnMg
PyAiUHJvcGVydHkiIDogIlZhbHVlIjsKKwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wg
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmdldE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGws
IEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDwke2NvbnN0
cnVjdG9yQ2xhc3NOYW1lfSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNz
TmFtZX1UYWJsZSwgc3RhdGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihjZWxsKSwg
cHJvcGVydHlOYW1lLCBzbG90KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBy
ZXR1cm4gZ2V0U3RhdGljJHtraW5kfVNsb3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9N
V3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFzc05hbWV9VGFibGUsIHN0YXRpY19jYXN0
PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Z2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpXG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSwgSlNET01XcmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwgc3Rh
dGljX2Nhc3Q8JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IGRlc2NyaXB0b3IpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiBn
ZXRTdGF0aWMke2tpbmR9RGVzY3JpcHRvcjwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSwgSlNET01X
cmFwcGVyPihleGVjLCAmJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX1UYWJsZSwgc3RhdGljX2Nhc3Q8
JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0qPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0
b3IpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKIAogICAgIGlmIChJ
c0NvbnN0cnVjdGFibGUoJGRhdGFOb2RlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA2NzIxYWE2YzYyZDBm
NmI2Y2UxM2RkNzEwNzM4MjRiYzg1MDViYWNkLi42NGUxOGZkZTZiOThiZWE0OGExZmJjNGU3MWQ0
YjdhMTM3NzhhMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTYyLDExICsxNjIsMTMgQEAgc3RhdGljIGNv
bnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAg
ICAgeyAiQ09OU1RfVkFMVUVfMTMiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1RfVkFM
VUVfMTMpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9J
bnRyaW5zaWMpIH0sCiAgICAgeyAiQ09OU1RfVkFMVUVfMTQiLCBEb250RGVsZXRlIHwgUmVhZE9u
bHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqQ09OU1RfVkFMVUVfMTQpLCAoaW50cHRyX3QpMCBUSFVOS19HRU5FUkFUT1IoMCkgSU5U
UklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAgeyAiQ09OU1RfSkFWQVNDUklQVCIsIERv
bnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05TVF9KQVZBU0NSSVBUKSwgKGludHB0cl90KTAgVEhV
TktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorICAgIHsgImNs
YXNzTWV0aG9kIiwgRG9udERlbGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZCks
IChpbnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNp
YykgfSwKKyAgICB7ICJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIsIERvbnREZWxldGUgfCBGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwpLCAoaW50cHRyX3QpMSBUSFVO
S19HRU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCiAgICAgeyAwLCAw
LCAwLCAwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfQog
fTsKIAogI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rl
c3RPYmpDb25zdHJ1Y3RvclRhYmxlID0geyAzMywgMzEsIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFi
bGVWYWx1ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqQ29uc3RydWN0
b3JUYWJsZSA9IHsgMzUsIDMxLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAwIH07
CiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIENPTVBJTEVfQVNTRVJUKDAgPT0gVGVzdE9iajo6
Q09ORElUSU9OQUxfQ09OU1QsIFRlc3RPYmpFbnVtQ09ORElUSU9OQUxfQ09OU1RJc1dyb25nVXNl
RG9udENoZWNrRW51bXMpOwpAQCAtMjAwLDEyICsyMDIsMTIgQEAgdm9pZCBKU1Rlc3RPYmpDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2wKIAogYm9vbCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpT
Q2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdE9iakNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RPYmpDb25z
dHJ1Y3RvclRhYmxlLCBzdGF0aWNfY2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KGNlbGwpLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBnZXRTdGF0aWNQcm9wZXJ0eVNsb3Q8SlNU
ZXN0T2JqQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVj
dG9yVGFibGUsIHN0YXRpY19jYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiB9CiAKIGJvb2wgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQogewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8SlNUZXN0T2JqQ29uc3Ry
dWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhlYywgJkpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGUsIHN0
YXRpY19jYXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBk
ZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljUHJvcGVydHlEZXNjcmlwdG9yPEpTVGVz
dE9iakNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clRhYmxlLCBzdGF0aWNfY2FzdDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHByb3Bl
cnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE9iaihFeGVjU3RhdGUqIGV4ZWMp
CkBAIC0yOTIsOCArMjk0LDYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
alByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgImNvbmRpdGlvbmFsTWV0aG9kMyIsIERv
bnREZWxldGUgfCBGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyksIChpbnRwdHJf
dCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykgfSwKICNl
bmRpZgogICAgIHsgIm92ZXJsb2FkZWRNZXRob2QiLCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kKSwgKGludHB0cl90KTIgVEhVTktfR0VORVJBVE9SKDApIElO
VFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAotICAgIHsgImNsYXNzTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2QpLCAoaW50cHRyX3QpMCBUSFVOS19H
RU5FUkFUT1IoMCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0sCi0gICAgeyAiY2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWwiLCBEb250RGVsZXRlIHwgRnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhPcHRpb25hbCksIChpbnRwdHJfdCkxIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5T
SUMoREZHOjpOb0ludHJpbnNpYykgfSwKICAgICB7IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9S
KDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9CiB9OwogCkBAIC0xODY2LDMxICsxODY2
LDE5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNTdGF0CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZChF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhp
c1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZv
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVl
KSk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2Jq
OjpzX2luZm8pOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOwotICAgIGltcC0+Y2xhc3NNZXRob2QoKTsKKyAgICBUZXN0T2JqOjpj
bGFzc01ldGhvZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIGV4ZWMpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpT
VGVzdE9iajo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
Ci0gICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOwotICAgIFRlc3RPYmoqIGltcCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogCiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9
IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBpZiAoYXJnc0NvdW50IDw9IDApIHsKIAotICAg
ICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wLT5jbGFzc01ldGhvZFdpdGhP
cHRpb25hbCgpKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKFRlc3RP
Ymo6OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0xODk4LDcgKzE4ODYsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RX
aXRoT3B0aW9uYWwoRQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXAtPmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGFyZykpOworICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihUZXN0T2JqOjpjbGFzc01ldGhvZFdpdGhP
cHRpb25hbChhcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCA5NGYwZDE1NjQ3ZDMxNWNhODU5YWFiZmVlZDJmNzQ3Y2ViZGIxZjUxLi5mOTcy
YTA4MTEzMmNjYTg3MDAxNDI4MzI3YzVmMjg2YzdkMjY0OGUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0xODMsOCAr
MTgzLDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QxKEoKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci1KU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZChK
U0M6OkV4ZWNTdGF0ZSopOwotSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoSlNDOjpFeGVjU3Rh
dGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2RXaXRoT3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUqKTsKIC8vIEF0dHJpYnV0ZXMKIAogSlNDOjpK
U1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5SW50QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNW
YWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cg==
</data>
<flag name="review"
          id="116330"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="116346"
          type_id="3"
          status="+"
          setter="arv"
    />
          </attachment>
      

    </bug>

</bugzilla>