<?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>78945</bug_id>
          
          <creation_ts>2012-02-17 16:34:30 -0800</creation_ts>
          <short_desc>Separate the implementation of registerProtocolHandler from Navigator.cpp</short_desc>
          <delta_ts>2012-02-21 23:27:39 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>559640</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 16:34:30 -0800</bug_when>
    <thetext>Separate the implementation of registerProtocolHandler from Navigator.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559642</commentid>
    <comment_count>1</comment_count>
      <attachid>127675</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 16:37:24 -0800</bug_when>
    <thetext>Created attachment 127675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559643</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 16:38:02 -0800</bug_when>
    <thetext>I&apos;m not entirely convinced that this is the best way to solve this problem.  Another approach is to have a free function for registerProtocolHandler that Navigator.cpp calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559646</commentid>
    <comment_count>3</comment_count>
      <attachid>127675</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-17 16:40:26 -0800</bug_when>
    <thetext>Comment on attachment 127675
Patch

Seems reasonable.  Looks like you&apos;re just moving code, and adding a new Suplemental=Navigator idl file.  Is my understanding correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559654</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-17 16:50:57 -0800</bug_when>
    <thetext>Yes, and changing references to m_frame to navigator-&gt;frame().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561642</commentid>
    <comment_count>5</comment_count>
      <attachid>128137</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 23:00:07 -0800</bug_when>
    <thetext>Created attachment 128137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561645</commentid>
    <comment_count>6</comment_count>
      <attachid>128137</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-21 23:02:28 -0800</bug_when>
    <thetext>Comment on attachment 128137
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561662</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 23:27:39 -0800</bug_when>
    <thetext>Committed r108450: &lt;http://trac.webkit.org/changeset/108450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127675</attachid>
            <date>2012-02-17 16:37:24 -0800</date>
            <delta_ts>2012-02-21 23:00:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78945-20120217163723.patch</filename>
            <type>text/plain</type>
            <size>22317</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTE3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGZyb20gTmF2aWdhdG9yLmNwcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW1wbGVtZW50
YXRpb24gb2YgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgbmVlZGxlc3NseSBjb21wbGljYXRlcwor
ICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgTmF2aWdhdG9yLmNwcC4gIEluIHByaW5jaXBs
ZSwKKyAgICAgICAgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgKGFuZCBwb3NzaWJseSByZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLCB3aGVuIHdlCisgICAgICAgIGltcGxlbWVudCB0aGF0IGZlYXR1cmUp
IGNvdWxkIGJlIGl0cyBvd24gbW9kdWxlLCBidXQgdGhhdCBzZWVtcyBsaWtlCisgICAgICAgIG92
ZXJraWxsIGZvciBvbmUgb3IgdHdvIGZpbGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKE5hdmlnYXRvcik6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuaWRsOgorCiAyMDEyLTAyLTE0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBTY3JvbGxpbmdDb29yZGluYXRvciBvdXQgb2Yg
RU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykgaWZkZWYgYW5kIGVuYWJsZSBvbiBhbGwgcGxhdGZv
cm1zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MTI2KQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMjEsNiArMTAyMSw3
IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJl
c3VsdHMuY3BwCiAgICAgcGFnZS9OYXZpZ2F0b3IuY3BwCiAgICAgcGFnZS9OYXZpZ2F0b3JCYXNl
LmNwcAorICAgIHBhZ2UvTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuY3BwCiAgICAg
cGFnZS9OYXZpZ2F0b3JTdXBwbGVtZW50LmNwcAogICAgIHBhZ2UvT3JpZ2luQWNjZXNzRW50cnku
Y3BwCiAgICAgcGFnZS9QYWdlLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzMzLDYgKzI3MzMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yQmFz
ZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclN1cHBsZW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclN1cHBsZW1lbnQuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC05OTgsNiArOTk4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9Nb3VzZUV2ZW50
V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBcCiAgICAgcGFnZS9OYXZpZ2F0b3IuY3BwIFwKICAgICBw
YWdlL05hdmlnYXRvckJhc2UuY3BwIFwKKyAgICBwYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyLmNwcCBcCiAgICAgcGFnZS9OYXZpZ2F0b3JTdXBwbGVtZW50LmNwcCBcCiAgICAg
cGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXAogICAgIHBhZ2UvUGFnZS5jcHAgXApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDYgKzEwMTMsNyBAQAogICAgICAgICAgICAg
J3BhZ2UvTG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL01lbW9yeUluZm8uaWRsJywK
ICAgICAgICAgICAgICdwYWdlL05hdmlnYXRvci5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvTmF2
aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaWRsJywKICAgICAgICAgICAgICdwYWdlL1Bl
cmZvcm1hbmNlLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24u
aWRsJywKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmlkbCcsCkBAIC0yNjM5
LDYgKzI2NDAsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvTmF2aWdhdG9yLmgnLAogICAgICAgICAg
ICAgJ3BhZ2UvTmF2aWdhdG9yQmFzZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvTmF2aWdhdG9y
QmFzZS5oJywKKyAgICAgICAgICAgICdwYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLmNwcCcsCisgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFu
ZGxlci5oJywKICAgICAgICAgICAgICdwYWdlL05hdmlnYXRvclN1cHBsZW1lbnQuY3BwJywKICAg
ICAgICAgICAgICdwYWdlL05hdmlnYXRvclN1cHBsZW1lbnQuaCcsCiAgICAgICAgICAgICAncGFn
ZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUy
Miw2ICsyNTUyMiwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwYWdlXE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxOYXZp
Z2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXE5hdmlnYXRvclN1cHBsZW1lbnQuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwODEyNikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MzMyNCw2ICszMzI0LDggQEAKIAkJOTcyMDVBQkMxMjM5MjkyNzAwQjE3MzgwIC8qIFBsdWdpbkRv
Y3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzIwNUFCQTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzI4QzMxMzEyNjhFNDM5MDA0
MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFj
Y3VtdWxhdG9yLmNwcCAqLzsgfTsKIAkJOTcyOEMzMTQxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1
cEFjY3VtdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzI4QzMxMjEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCAqLzsg
fTsKKwkJOTczMEJFMTcxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlci5jcHAgKi87IH07CisJCTk3MzBCRTE4MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0
b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTczMEJFMTUxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyLmggKi87IH07CiAJCTk3Mzg4OUEwMTE2RUE5REMwMEFERjMx
MyAvKiBEb2N1bWVudFdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
Y3BwICovOyB9OwogCQk5NzM4ODlBMTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3Mzg4OTlG
MTE2RUE5REMwMEFERjMxMyAvKiBEb2N1bWVudFdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3M0RDNjNGMTQ1QTk0MDkwMDI4NDJDMiAv
KiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTczREM2M0QxNDVBOTQwOTAwMjg0MkMyIC8qIEV4Y2VwdGlv
bkNvZGVEZXNjcmlwdGlvbi5jcHAgKi87IH07CkBAIC0xMDE4Miw2ICsxMDE4NCw5IEBACiAJCTk3
MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5Eb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NzI4QzMxMTEyNjhFNDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya3VwQWNjdW11bGF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzI4QzMxMjEyNjhFNDM5MDA0
MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWFya3VwQWNjdW11bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTczMEJFMTQxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvclJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTczMEJFMTUxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRvclJlZ2lzdGVy
UHJvdG9jb2xIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3MzBCRTE2
MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzM4ODk5RTExNkVBOURDMDBBREYz
MTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRG9jdW1lbnRXcml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTczREM2M0QxNDVBOTQwOTAwMjg0MkMyIC8qIEV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNlcHRp
b25Db2RlRGVzY3JpcHRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUy
NTQsNiArMTUyNTksOSBAQAogCQkJCUE5QzZFNjVEMEQ3NDY2OTQwMDY0NDJFOSAvKiBOYXZpZ2F0
b3IuaWRsICovLAogCQkJCUUxMjcxOUM5MEVFRUMyMTMwMEY2MTIxMyAvKiBOYXZpZ2F0b3JCYXNl
LmNwcCAqLywKIAkJCQlFMTI3MTlDNjBFRUVDMTY4MDBGNjEyMTMgLyogTmF2aWdhdG9yQmFzZS5o
ICovLAorCQkJCTk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclBy
b3RvY29sSGFuZGxlci5jcHAgKi8sCisJCQkJOTczMEJFMTUxNEVGMjg2QjAwREYwNkI5IC8qIE5h
dmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmggKi8sCisJCQkJOTczMEJFMTYxNEVGMjg2
QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmlkbCAqLywKIAkJ
CQk5N0NDM0FFMDE0RThFNEEyMDA4OTQ5ODggLyogTmF2aWdhdG9yU3VwcGxlbWVudC5jcHAgKi8s
CiAJCQkJOTdDQzNBRTExNEU4RTRBMjAwODk0OTg4IC8qIE5hdmlnYXRvclN1cHBsZW1lbnQuaCAq
LywKIAkJCQkwMDE0NjI4ODEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuY3Bw
ICovLApAQCAtMjQyNzAsNiArMjQyNzgsNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1
OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZD
OUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEz
N0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk3MzBCRTE4
MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNzIxNCw2ICsyNzIyMyw3IEBACiAJCQkJRTFCRTUxMkQwQ0Y2QzUx
MjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdF
MkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOTczMEJFMTcxNEVGMjg2QjAwREYwNkI5IC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmNwcAkocmV2aXNpb24gMTA4MTI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywyMiArMjMsMTcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKIAotI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1
ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRPTU1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRl
ICJET01QbHVnaW5BcnJheS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIu
aCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9u
LmgiCisjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCi0jaW5jbHVk
ZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFn
ZU5hbWVzcGFjZS5oIgpAQCAtMTcyLDEwMCArMTY3LDQgQEAgdm9pZCBOYXZpZ2F0b3I6OmdldFN0
b3JhZ2VVcGRhdGVzKCkKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIG9yIHJlbmFt
ZSB0byB5aWVsZEZvclN0b3JhZ2VVcGRhdGVzLgogfQogCi0jaWYgRU5BQkxFKFJFR0lTVEVSX1BS
T1RPQ09MX0hBTkRMRVIpCi1zdGF0aWMgSGFzaFNldDxTdHJpbmc+KiBwcm90b2NvbFdoaXRlbGlz
dDsKLQotc3RhdGljIHZvaWQgaW5pdFByb3RvY29sSGFuZGxlcldoaXRlbGlzdCgpCi17Ci0gICAg
cHJvdG9jb2xXaGl0ZWxpc3QgPSBuZXcgSGFzaFNldDxTdHJpbmc+OwotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBwcm90b2NvbHNbXSA9IHsKLSAgICAgICAgImlyYyIsCi0gICAgICAgICJtYWlsdG8i
LAotICAgICAgICAibW1zIiwKLSAgICAgICAgIm5ld3MiLAotICAgICAgICAibm50cCIsCi0gICAg
ICAgICJzbXMiLAotICAgICAgICAic21zdG8iLAotICAgICAgICAidGVsIiwKLSAgICAgICAgInVy
biIsCi0gICAgICAgICJ3ZWJjYWwiLAotICAgIH07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBXVEZfQVJSQVlfTEVOR1RIKHByb3RvY29scyk7ICsraSkKLSAgICAgICAgcHJvdG9jb2xXaGl0
ZWxpc3QtPmFkZChwcm90b2NvbHNbaV0pOwotfQotCi1zdGF0aWMgYm9vbCB2ZXJpZnlDdXN0b21I
YW5kbGVyVVJMKGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzIHRoYXQg
aXQgaXMgYSBTWU5UQVhfRVJSIGlmIHRoZSAiJXMiIHRva2VuIGlzCi0gICAgLy8gbm90IHByZXNl
bnQuCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgdG9rZW5bXSA9ICIlcyI7Ci0gICAgaW50IGluZGV4
ID0gdXJsLmZpbmQodG9rZW4pOwotICAgIGlmICgtMSA9PSBpbmRleCkgewotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBJdCBp
cyBhbHNvIGEgU1lOVEFYX0VSUiBpZiB0aGUgY3VzdG9tIGhhbmRsZXIgVVJMLCBhcyBjcmVhdGVk
IGJ5IHJlbW92aW5nCi0gICAgLy8gdGhlICIlcyIgdG9rZW4gYW5kIHByZXBlbmRpbmcgdGhlIGJh
c2UgdXJsLCBkb2VzIG5vdCByZXNvbHZlLgotICAgIFN0cmluZyBuZXdVUkwgPSB1cmw7Ci0gICAg
bmV3VVJMLnJlbW92ZShpbmRleCwgV1RGX0FSUkFZX0xFTkdUSCh0b2tlbikgLSAxKTsKLQotICAg
IEtVUkwgYmFzZShQYXJzZWRVUkxTdHJpbmcsIGJhc2VVUkwpOwotICAgIEtVUkwga3VybChiYXNl
LCBuZXdVUkwpOwotCi0gICAgaWYgKGt1cmwuaXNFbXB0eSgpIHx8ICFrdXJsLmlzVmFsaWQoKSkg
ewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGJvb2wgaXNQcm90b2NvbFdoaXRlbGlz
dGVkKGNvbnN0IFN0cmluZyYgc2NoZW1lKQotewotICAgIGlmICghcHJvdG9jb2xXaGl0ZWxpc3Qp
Ci0gICAgICAgIGluaXRQcm90b2NvbEhhbmRsZXJXaGl0ZWxpc3QoKTsKLSAgICByZXR1cm4gcHJv
dG9jb2xXaGl0ZWxpc3QtPmNvbnRhaW5zKHNjaGVtZSk7Ci19Ci0KLXN0YXRpYyBib29sIHZlcmlm
eVByb3RvY29sSGFuZGxlclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgaWYgKHNjaGVtZS5zdGFydHNXaXRoKCJ3ZWIrIikpIHsKLSAgICAgICAg
aWYgKGlzVmFsaWRQcm90b2NvbChzY2hlbWUpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgaWYgKGlzUHJvdG9jb2xXaGl0ZWxpc3RlZChzY2hlbWUpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZv
aWQgTmF2aWdhdG9yOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVt
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmICghbV9mcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYmFzZVVSTCA9IGRvY3VtZW50LT5iYXNlVVJM
KCkuYmFzZUFzU3RyaW5nKCk7Ci0KLSAgICBpZiAoIXZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoYmFz
ZVVSTCwgdXJsLCBlYykpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdmVyaWZ5UHJvdG9j
b2xIYW5kbGVyU2NoZW1lKHNjaGVtZSwgZWMpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBQYWdl
KiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcGFnZS0+Y2hyb21lKCktPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNjaGVtZSwg
YmFzZVVSTCwgdXJsLCBtX2ZyYW1lLT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKHRp
dGxlKSk7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCShyZXZpc2lvbiAxMDgxMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMCArNjUsNiBAQCBwdWJsaWM6CiAg
ICAgLy8gUmVsaW5xdWlzaGVzIHRoZSBzdG9yYWdlIGxvY2ssIGlmIG9uZSBleGlzdHMuCiAgICAg
dm9pZCBnZXRTdG9yYWdlVXBkYXRlcygpOwogCi0jaWYgRU5BQkxFKFJFR0lTVEVSX1BST1RPQ09M
X0hBTkRMRVIpCi0gICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcm
IHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlv
bkNvZGUmKTsKLSNlbmRpZgotCiAgICAgdm9pZCBwcm92aWRlU3VwcGxlbWVudChjb25zdCBBdG9t
aWNTdHJpbmcmLCBQYXNzT3duUHRyPE5hdmlnYXRvclN1cHBsZW1lbnQ+KTsKICAgICBOYXZpZ2F0
b3JTdXBwbGVtZW50KiByZXF1aXJlU3VwcGxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2aXNpb24gMTA4MTI2KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMSAr
NDksNiBAQCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgZ2V0U3RvcmFn
ZVVwZGF0ZXMoKTsgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvciByZW5hbWUgdG8geWll
bGRGb3JTdG9yYWdlVXBkYXRlcy4KLQotI2lmIGRlZmluZWQoRU5BQkxFX1JFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIpICYmIEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSCi0gICAgICAg
IHZvaWQgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoaW4gRE9NU3RyaW5nIHNjaGVtZSwgaW4gRE9N
U3RyaW5nIHVybCwgaW4gRE9NU3RyaW5nIHRpdGxlKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4
Y2VwdGlvbik7Ci0jZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICog
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdmlnYXRvclJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyLmgiCisKKyNpZiBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKKwor
I2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiogcHJvdG9jb2xXaGl0ZWxpc3Q7
CisKK3N0YXRpYyB2b2lkIGluaXRQcm90b2NvbEhhbmRsZXJXaGl0ZWxpc3QoKQoreworICAgIHBy
b3RvY29sV2hpdGVsaXN0ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPjsKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogcHJvdG9jb2xzW10gPSB7CisgICAgICAgICJpcmMiLAorICAgICAgICAibWFpbHRvIiwK
KyAgICAgICAgIm1tcyIsCisgICAgICAgICJuZXdzIiwKKyAgICAgICAgIm5udHAiLAorICAgICAg
ICAic21zIiwKKyAgICAgICAgInNtc3RvIiwKKyAgICAgICAgInRlbCIsCisgICAgICAgICJ1cm4i
LAorICAgICAgICAid2ViY2FsIiwKKyAgICB9OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChwcm90b2NvbHMpOyArK2kpCisgICAgICAgIHByb3RvY29sV2hpdGVs
aXN0LT5hZGQocHJvdG9jb2xzW2ldKTsKK30KKworc3RhdGljIGJvb2wgdmVyaWZ5Q3VzdG9tSGFu
ZGxlclVSTChjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IGl0
IGlzIGEgU1lOVEFYX0VSUiBpZiB0aGUgIiVzIiB0b2tlbiBpcworICAgIC8vIG5vdCBwcmVzZW50
LgorICAgIHN0YXRpYyBjb25zdCBjaGFyIHRva2VuW10gPSAiJXMiOworICAgIGludCBpbmRleCA9
IHVybC5maW5kKHRva2VuKTsKKyAgICBpZiAoLTEgPT0gaW5kZXgpIHsKKyAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSXQgaXMg
YWxzbyBhIFNZTlRBWF9FUlIgaWYgdGhlIGN1c3RvbSBoYW5kbGVyIFVSTCwgYXMgY3JlYXRlZCBi
eSByZW1vdmluZworICAgIC8vIHRoZSAiJXMiIHRva2VuIGFuZCBwcmVwZW5kaW5nIHRoZSBiYXNl
IHVybCwgZG9lcyBub3QgcmVzb2x2ZS4KKyAgICBTdHJpbmcgbmV3VVJMID0gdXJsOworICAgIG5l
d1VSTC5yZW1vdmUoaW5kZXgsIFdURl9BUlJBWV9MRU5HVEgodG9rZW4pIC0gMSk7CisKKyAgICBL
VVJMIGJhc2UoUGFyc2VkVVJMU3RyaW5nLCBiYXNlVVJMKTsKKyAgICBLVVJMIGt1cmwoYmFzZSwg
bmV3VVJMKTsKKworICAgIGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGlzUHJvdG9jb2xXaGl0ZWxpc3Rl
ZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoIXByb3RvY29sV2hpdGVsaXN0KQor
ICAgICAgICBpbml0UHJvdG9jb2xIYW5kbGVyV2hpdGVsaXN0KCk7CisgICAgcmV0dXJuIHByb3Rv
Y29sV2hpdGVsaXN0LT5jb250YWlucyhzY2hlbWUpOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlQ
cm90b2NvbEhhbmRsZXJTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChzY2hlbWUuc3RhcnRzV2l0aCgid2ViKyIpKSB7CisgICAgICAgIGlm
IChpc1ZhbGlkUHJvdG9jb2woc2NoZW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChpc1Byb3RvY29sV2hpdGVsaXN0ZWQoc2NoZW1lKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgZWMgPSBTRUNVUklUWV9FUlI7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitOYXZp
Z2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlcjo6TmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhh
bmRsZXIoKQoreworfQorCitOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlcjo6fk5hdmln
YXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkKK3sKK30KKwordm9pZCBOYXZpZ2F0b3JSZWdp
c3RlclByb3RvY29sSGFuZGxlcjo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoTmF2aWdhdG9yKiBu
YXZpZ2F0b3IsIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFuYXZpZ2F0b3It
PmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG5h
dmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBTdHJpbmcgYmFzZVVSTCA9IGRvY3VtZW50LT5iYXNlVVJMKCkuYmFz
ZUFzU3RyaW5nKCk7CisKKyAgICBpZiAoIXZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoYmFzZVVSTCwg
dXJsLCBlYykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdmVyaWZ5UHJvdG9jb2xIYW5k
bGVyU2NoZW1lKHNjaGVtZSwgZWMpKQorICAgICAgICByZXR1cm47CisKKyAgICBQYWdlKiBwYWdl
ID0gbmF2aWdhdG9yLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWdlLT5jaHJvbWUoKS0+cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoc2No
ZW1lLCBiYXNlVVJMLCB1cmwsIG5hdmlnYXRvci0+ZnJhbWUoKS0+ZGlzcGxheVN0cmluZ01vZGlm
aWVkQnlFbmNvZGluZyh0aXRsZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05h
dmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg
KiBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyX2gKKyNkZWZpbmUgTmF2aWdhdG9yUmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXJfaAorCisjaWYgRU5BQkxFKFJFR0lTVEVSX1BST1RPQ09MX0hB
TkRMRVIpCisKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5hdmlnYXRvcjsK
KwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgTmF2aWdhdG9yUmVnaXN0ZXJQ
cm90b2NvbEhhbmRsZXIgeworcHVibGljOgorICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyKE5hdmlnYXRvciosIGNvbnN0IFN0cmluZyYgc2NoZW1lLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgRXhjZXB0aW9uQ29kZSYpOworCitwcml2YXRlOgor
ICAgIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCk7CisgICAgfk5hdmlnYXRvclJl
Z2lzdGVyUHJvdG9jb2xIYW5kbGVyKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoUkVHSVNURVJfUFJPVE9DT0xfSEFORExFUikKKworI2VuZGlmIC8v
IE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaWRs
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclBy
b3RvY29sSGFuZGxlci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgICAg
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyovCisKK21vZHVsZSB3aW5kb3cgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
Q29uZGl0aW9uYWw9UkVHSVNURVJfUFJPVE9DT0xfSEFORExFUiwKKyAgICAgICAgU3VwcGxlbWVu
dGFsPU5hdmlnYXRvcgorICAgIF0gTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgewor
ICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGluIERPTVN0cmluZyBzY2hlbWUs
IGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0aXRsZSkKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIH07CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128137</attachid>
            <date>2012-02-21 23:00:07 -0800</date>
            <delta_ts>2012-02-21 23:05:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78945-20120221230006.patch</filename>
            <type>text/plain</type>
            <size>26794</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTIxICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU2VwYXJhdGUgdGhlIGltcGxlbWVu
dGF0aW9uIG9mIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIGZyb20gTmF2aWdhdG9yLmNwcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg5NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgaW1wbGVtZW50
YXRpb24gb2YgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgbmVlZGxlc3NseSBjb21wbGljYXRlcwor
ICAgICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgTmF2aWdhdG9yLmNwcC4gIEluIHByaW5jaXBs
ZSwKKyAgICAgICAgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgKGFuZCBwb3NzaWJseSByZWdpc3Rl
ckNvbnRlbnRIYW5kbGVyLCB3aGVuIHdlCisgICAgICAgIGltcGxlbWVudCB0aGF0IGZlYXR1cmUp
IGNvdWxkIGJlIGl0cyBvd24gbW9kdWxlLCBidXQgdGhhdCBzZWVtcyBsaWtlCisgICAgICAgIG92
ZXJraWxsIGZvciBvbmUgb3IgdHdvIGZpbGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKE5hdmlnYXRvcik6CisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuaWRsOgorCiAyMDEyLTAyLTIxICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5l
eUBhcHBsZS5jb20+CiAKICAgICAgICAgMkQgQ2FudmFzIHNldFRyYW5zZm9ybSBtYWtlcyB1bm5l
Y2Vzc2FyeSBtYXRyaXggbXVsdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MDg0NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTAzMCw2ICsxMDMwLDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvTW91c2VF
dmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAKICAgICBwYWdlL05hdmlnYXRvci5jcHAKICAgICBw
YWdlL05hdmlnYXRvckJhc2UuY3BwCisgICAgcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlci5jcHAKICAgICBwYWdlL05hdmlnYXRvclN1cHBsZW1lbnQuY3BwCiAgICAgcGFnZS9P
cmlnaW5BY2Nlc3NFbnRyeS5jcHAKICAgICBwYWdlL1BhZ2UuY3BwCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwODQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI3NDAsNiArMjc0MCw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3JCYXNlLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
clJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yU3VwcGxlbWVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yU3VwcGxl
bWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL09yaWdpbkFjY2Vzc0VudHJ5LmNwcCBcCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwODQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNiArMTAwMSw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXAogICAgIHBhZ2UvTmF2
aWdhdG9yLmNwcCBcCiAgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBcCisgICAgcGFnZS9OYXZp
Z2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHAgXAogICAgIHBhZ2UvTmF2aWdhdG9yU3Vw
cGxlbWVudC5jcHAgXAogICAgIHBhZ2UvT3JpZ2luQWNjZXNzRW50cnkuY3BwIFwKICAgICBwYWdl
L1BhZ2UuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEwODQ0NykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTAxMiw2ICsxMDEy
LDcgQEAKICAgICAgICAgICAgICdwYWdlL0xvY2F0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFn
ZS9NZW1vcnlJbmZvLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3IuaWRsJywKKyAg
ICAgICAgICAgICdwYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmlkbCcsCiAg
ICAgICAgICAgICAncGFnZS9QZXJmb3JtYW5jZS5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvUGVy
Zm9ybWFuY2VOYXZpZ2F0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9QZXJmb3JtYW5jZVRp
bWluZy5pZGwnLApAQCAtMjY0Miw2ICsyNjQzLDggQEAKICAgICAgICAgICAgICdwYWdlL05hdmln
YXRvci5oJywKICAgICAgICAgICAgICdwYWdlL05hdmlnYXRvckJhc2UuY3BwJywKICAgICAgICAg
ICAgICdwYWdlL05hdmlnYXRvckJhc2UuaCcsCisgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3JS
ZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvTmF2aWdhdG9y
UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3JT
dXBwbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9OYXZpZ2F0b3JTdXBwbGVtZW50Lmgn
LAogICAgICAgICAgICAgJ3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMDg0
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjU1ODYsNiArMjU1ODYsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxOYXZpZ2F0b3JSZWdpc3RlclByb3Rv
Y29sSGFuZGxlci5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxOYXZpZ2F0
b3JTdXBwbGVtZW50LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDg0
NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM0NTksNiArMzQ1OSw4IEBACiAJCTk3RENFMjAyMTA4MDdDNzUw
MDU3RDM5NCAvKiBIaXN0b3J5Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdEQ0UyMDAxMDgwN0M3NTAwNTdEMzk0IC8qIEhpc3RvcnlD
b250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTdFNDAyOEYxM0E2OTZFRDAwOTEzRDY3IC8qIEljb25Db250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3RTQwMjhEMTNBNjk2
RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5jcHAgKi87IH07CiAJCTk3RTQwMjkwMTNBNjk2
RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFNDAyOEUxM0E2OTZFRDAwOTEzRDY3IC8qIEljb25Db250
cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJOTdFNEExMjYxNEY0QzVENDAwODcwRTQzIC8qIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzMwQkUxNTE0RUYyODZCMDBERjA2QjkgLyogTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXIuaCAqLzsgfTsKKwkJOTdFNEExMjcxNEY0QzVENzAwODcwRTQzIC8qIE5hdmlnYXRvclJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3Rl
clByb3RvY29sSGFuZGxlci5jcHAgKi87IH07CiAJCTk3RUY3REZFMTA3RTU1QjcwMEQ3QzQ5QyAv
KiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyogU2NyaXB0Q29udHJv
bGxlckJhc2UuY3BwICovOyB9OwogCQk5ODQyNjRGMTEyRDUyODBBMDAwRDg4QTQgLyogTGlua0xv
YWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTg0MjY0RUYxMkQ1MjgwQTAwMEQ4OEE0IC8qIExpbmtMb2FkZXJDbGllbnQuaCAqLzsgfTsK
IAkJOTg1QkI5NkQxM0E5NDA1ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTg1QkI5NkIxM0E5NDA1
ODAwN0EwQjY5IC8qIExpbmtSZWxBdHRyaWJ1dGUuY3BwICovOyB9OwpAQCAtMTAyMDMsNiArMTAy
MDUsOSBAQAogCQk5NzIwNUFCQTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luRG9jdW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyOEMzMTExMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1
cEFjY3VtdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1h
cmt1cEFjY3VtdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcyOEMz
MTIxMjY4RTQzOTAwNDFFODlCIC8qIE1hcmt1cEFjY3VtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmt1cEFjY3VtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk3MzBCRTE0MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3Rl
clByb3RvY29sSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk3MzBCRTE1MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3Rl
clByb3RvY29sSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXZp
Z2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5NzMwQkUxNjE0RUYyODZCMDBERjA2QjkgLyogTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2Nv
bEhhbmRsZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmlnYXRvclJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTczODg5OUUx
MTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTczODg5OUYxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0RDNjNEMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1MjgyLDYgKzE1Mjg3LDkgQEAKIAkJCQlBOUM2RTY1RDBENzQ2Njk0MDA2NDQy
RTkgLyogTmF2aWdhdG9yLmlkbCAqLywKIAkJCQlFMTI3MTlDOTBFRUVDMjEzMDBGNjEyMTMgLyog
TmF2aWdhdG9yQmFzZS5jcHAgKi8sCiAJCQkJRTEyNzE5QzYwRUVFQzE2ODAwRjYxMjEzIC8qIE5h
dmlnYXRvckJhc2UuaCAqLywKKwkJCQk5NzMwQkUxNDE0RUYyODZCMDBERjA2QjkgLyogTmF2aWdh
dG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuY3BwICovLAorCQkJCTk3MzBCRTE1MTRFRjI4NkIw
MERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oICovLAorCQkJCTk3
MzBCRTE2MTRFRjI4NkIwMERGMDZCOSAvKiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxl
ci5pZGwgKi8sCiAJCQkJOTdDQzNBRTAxNEU4RTRBMjAwODk0OTg4IC8qIE5hdmlnYXRvclN1cHBs
ZW1lbnQuY3BwICovLAogCQkJCTk3Q0MzQUUxMTRFOEU0QTIwMDg5NDk4OCAvKiBOYXZpZ2F0b3JT
dXBwbGVtZW50LmggKi8sCiAJCQkJMDAxNDYyODgxMDNDRDFERTAwMEIyMERCIC8qIE9yaWdpbkFj
Y2Vzc0VudHJ5LmNwcCAqLywKQEAgLTE5MjEzLDEyICsxOTIyMSwxMiBAQAogCQlCQzFBMzc5MDA5
N0M2Rjk3MDAxOUYzRDggLyogYmluZGluZ3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAotCQkJCUE4M0I1MzM4MTRGMzk5QkIwMDcyMEQ5RCAvKiBJRExBdHRyaWJ1
dGVzLnR4dCAqLywKIAkJCQlCNUQzMURGNzExQ0Y2MEU1MDA5RjIyQjQgLyogZ2VuZXJpYyAqLywK
IAkJCQlCQzFBMzc5MzA5N0M2RkIxMDAxOUYzRDggLyoganMgKi8sCiAJCQkJQkMxQTM3OTQwOTdD
NkZDNDAwMTlGM0Q4IC8qIG9iamMgKi8sCiAJCQkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8q
IENvZGVHZW5lcmF0b3IucG0gKi8sCiAJCQkJOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdl
bmVyYXRlLWJpbmRpbmdzLnBsICovLAorCQkJCUE4M0I1MzM4MTRGMzk5QkIwMDcyMEQ5RCAvKiBJ
RExBdHRyaWJ1dGVzLnR4dCAqLywKIAkJCQkxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEgLyogSURM
UGFyc2VyLnBtICovLAogCQkJCTkzRjhCMzA4MEEzMDBGRUEwMEY2MUFCOCAvKiBJRExTdHJ1Y3R1
cmUucG0gKi8sCiAJCQkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5w
bSAqLywKQEAgLTIyMzU4LDYgKzIyMzY2LDcgQEAKIAkJCQk2NTZEMzczQTBBREJBNURFMDBBNDU1
NEQgLyogRm9ybVN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTg4NUI5MzExQjZGREE2MDAz
MzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzZEMDlB
QzRENjMwMEE2QUFCNCAvKiBGb3VuZGF0aW9uRXh0cmFzLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
NDRGQ0ZFMTE0RUYyNTA5MDAwRDE3QTMgLyogRnJhY3Rpb25hbExheW91dFJlY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0NEZDRTVEMTRFQzc5RTcwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0
U2l6ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0RkNFNTIxNEVDNzlCQzAwMEQxN0EzIC8qIEZy
YWN0aW9uYWxMYXlvdXRVbml0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODUzMTIzRDExRDA0NzFC
MDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTIzMzEzLDYgKzIzMzIyLDcgQEAKIAkJCQlBOUM2RTVBNjBENzQ2NDU4MDA2NDQyRTkgLyog
TmF2aWdhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI3MTlDNzBFRUVDMTY4MDBGNjEyMTMg
LyogTmF2aWdhdG9yQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcxMTQ2MDQxNEVGMDA5QTAw
Njc0RkQ5IC8qIE5hdmlnYXRvckdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5N0U0
QTEyNjE0RjRDNUQ0MDA4NzBFNDMgLyogTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk3Q0MzQUUzMTRFOEU0QTIwMDg5NDk4OCAvKiBOYXZpZ2F0
b3JTdXBwbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTMwOUM5RjEyMzk1MEJFMDBDQjky
MDQgLyogTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQz
NzQzMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMzQ0OSw2ICsyMzQ1OSw3IEBACiAJCQkJRTQ0NjEzRUMwQ0Q2ODFCNTAw
RkFEQTc1IC8qIFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3MTVFNjUzMTM0
QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMkE2ODI0MEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njc1MENFOTIzQTEwMDdF
RjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTA1MjU2MTA1
ODg3NDAwMENDOUU5NSAvKiBQcm90ZWN0aW9uU3BhY2VIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUY4RTExQTEyNTY1OTI2MDAyMzBGRjcgLyogUHJveHlTZXJ2ZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtMjQzMjEsOCArMjQzMzIsNiBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAv
KiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3N0UyRTBGMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDUzNzM1MzEzN0I2
NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0QkJFRDBGMTRG
NDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFk
ZXJzICovLAotCQkJCTE0NEZDRkUxMTRFRjI1MDkwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0
UmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTQzNCw2ICsyNTQ0Myw3IEBACiAJCQkJNTE0Qzc2
NEYwQ0U5MjM0RTAwN0VGM0NEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNjU2RDM3M0IwQURCQTVERTAwQTQ1NTREIC8qIEZvcm1TdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MTg4NUI5NDExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMTQ0RkNGRTAxNEVGMjUwOTAwMEQxN0EzIC8qIEZyYWN0aW9u
YWxMYXlvdXRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NEZDRTVDMTRFQzc5RTcwMDBE
MTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0U2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUJG
MDIyRTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdC
MDcwRDIxMzBBNDA5QzAwQTM3NjNDIC8qIEZyYW1lQWN0aW9uU2NoZWR1bGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMjY0NjksNiArMjY0NzksNyBAQAogCQkJCUE5QzZFNUE1MEQ3NDY0NTgwMDY0
NDJFOSAvKiBOYXZpZ2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNzE5Q0EwRUVFQzIx
MzAwRjYxMjEzIC8qIE5hdmlnYXRvckJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTcxMTQ2
MDMxNEVGMDA5QTAwNjc0RkQ5IC8qIE5hdmlnYXRvckdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTk3RTRBMTI3MTRGNEM1RDcwMDg3MEU0MyAvKiBOYXZpZ2F0b3JSZWdpc3RlclBy
b3RvY29sSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0NDM0FFMjE0RThFNEEyMDA4
OTQ5ODggLyogTmF2aWdhdG9yU3VwcGxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RDg3
NEYxMzBEMTYxRDMyMDA3OTZDM0IgLyogTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTlDMjdGMDUxMzhEMjhDMTAwNzlCN0UyIC8qIE5ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY1NjQsNiArMjY1NzUsNyBAQAogCQkJ
CUU0NDYxM0VCMENENjgxQjQwMEZBREE3NSAvKiBQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE3MTVFNjUyMTM0QkJCRUMwMEQ4RTcxMyAvKiBQcm9ncmVzc1NoYWRvd0VsZW1l
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyQTY4MjMwQjVCRURFNzAwMDJBNDgwIC8qIFBy
b2dyZXNzVHJhY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNEJCRUQwRTE0RjQwMjVEMDAz
RjBCOTggLyogUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNEM3Njc0MENFOTIzQTEwMDdFRjNDRCAvKiBQcm90ZWN0aW9uU3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFGOEUxMzMxMjU2NUE0NDAwMjMwRkY3IC8qIFByb3h5U2VydmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjhFMUMzMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94
eVNlcnZlckNGTmV0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcxOTEsOCArMjcyMDMsOCBAQAog
CQkJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MThBMzRDMTEwMjZDODMxMDAxQjY4OTYgLyogV2ViU29ja2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTUxMEQ0QTRFMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRD
aGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRBOTU3RjA2MTRFMjQxMkEwMDQ5REJGQiAv
KiBXZWJTb2NrZXRFeHRlbnNpb25EaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRB
RTAyQUJEMTRFOEE5RDIwMEJDM0JBNyAvKiBXZWJTb2NrZXREZWZsYXRlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0QTk1N0YwNjE0RTI0MTJBMDA0OURCRkIgLyogV2ViU29ja2V0RXh0ZW5zaW9u
RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUy
NjAgLyogV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2MzdDNTQx
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjcwLDggKzI3MjgyLDYgQEAKIAkJ
CQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlFNEJCRUQwRTE0RjQwMjVEMDAzRjBCOTggLyogUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTE0NEZDRkUw
MTRFRjI1MDkwMDBEMTdBMyAvKiBGcmFjdGlvbmFsTGF5b3V0UmVjdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDEwODQ0NykKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MjIgKzIzLDE3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9yLmgi
CiAKLSNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRl
ICJET01NaW1lVHlwZUFycmF5LmgiCiAjaW5jbHVkZSAiRE9NUGx1Z2luQXJyYXkuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQb2ludGVyTG9jay5oIgotI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlR3JvdXAuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VOYW1lc3BhY2UuaCIKQEAgLTE1OSwxMDAg
KzE1NCw0IEBAIHZvaWQgTmF2aWdhdG9yOjpnZXRTdG9yYWdlVXBkYXRlcygpCiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvciByZW5hbWUgdG8geWllbGRGb3JTdG9yYWdlVXBkYXRl
cy4KIH0KIAotI2lmIEVOQUJMRShSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKQotc3RhdGljIEhh
c2hTZXQ8U3RyaW5nPiogcHJvdG9jb2xXaGl0ZWxpc3Q7Ci0KLXN0YXRpYyB2b2lkIGluaXRQcm90
b2NvbEhhbmRsZXJXaGl0ZWxpc3QoKQotewotICAgIHByb3RvY29sV2hpdGVsaXN0ID0gbmV3IEhh
c2hTZXQ8U3RyaW5nPjsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogcHJvdG9jb2xzW10gPSB7Ci0g
ICAgICAgICJpcmMiLAotICAgICAgICAibWFpbHRvIiwKLSAgICAgICAgIm1tcyIsCi0gICAgICAg
ICJuZXdzIiwKLSAgICAgICAgIm5udHAiLAotICAgICAgICAic21zIiwKLSAgICAgICAgInNtc3Rv
IiwKLSAgICAgICAgInRlbCIsCi0gICAgICAgICJ1cm4iLAotICAgICAgICAid2ViY2FsIiwKLSAg
ICB9OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChwcm90b2Nv
bHMpOyArK2kpCi0gICAgICAgIHByb3RvY29sV2hpdGVsaXN0LT5hZGQocHJvdG9jb2xzW2ldKTsK
LX0KLQotc3RhdGljIGJvb2wgdmVyaWZ5Q3VzdG9tSGFuZGxlclVSTChjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICAvLyBU
aGUgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0IGl0IGlzIGEgU1lOVEFYX0VSUiBpZiB0aGUg
IiVzIiB0b2tlbiBpcwotICAgIC8vIG5vdCBwcmVzZW50LgotICAgIHN0YXRpYyBjb25zdCBjaGFy
IHRva2VuW10gPSAiJXMiOwotICAgIGludCBpbmRleCA9IHVybC5maW5kKHRva2VuKTsKLSAgICBp
ZiAoLTEgPT0gaW5kZXgpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gSXQgaXMgYWxzbyBhIFNZTlRBWF9FUlIgaWYgdGhl
IGN1c3RvbSBoYW5kbGVyIFVSTCwgYXMgY3JlYXRlZCBieSByZW1vdmluZwotICAgIC8vIHRoZSAi
JXMiIHRva2VuIGFuZCBwcmVwZW5kaW5nIHRoZSBiYXNlIHVybCwgZG9lcyBub3QgcmVzb2x2ZS4K
LSAgICBTdHJpbmcgbmV3VVJMID0gdXJsOwotICAgIG5ld1VSTC5yZW1vdmUoaW5kZXgsIFdURl9B
UlJBWV9MRU5HVEgodG9rZW4pIC0gMSk7Ci0KLSAgICBLVVJMIGJhc2UoUGFyc2VkVVJMU3RyaW5n
LCBiYXNlVVJMKTsKLSAgICBLVVJMIGt1cmwoYmFzZSwgbmV3VVJMKTsKLQotICAgIGlmIChrdXJs
LmlzRW1wdHkoKSB8fCAha3VybC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXN0YXRpYyBib29sIGlzUHJvdG9jb2xXaGl0ZWxpc3RlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
LXsKLSAgICBpZiAoIXByb3RvY29sV2hpdGVsaXN0KQotICAgICAgICBpbml0UHJvdG9jb2xIYW5k
bGVyV2hpdGVsaXN0KCk7Ci0gICAgcmV0dXJuIHByb3RvY29sV2hpdGVsaXN0LT5jb250YWlucyhz
Y2hlbWUpOwotfQotCi1zdGF0aWMgYm9vbCB2ZXJpZnlQcm90b2NvbEhhbmRsZXJTY2hlbWUoY29u
c3QgU3RyaW5nJiBzY2hlbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmIChzY2hlbWUu
c3RhcnRzV2l0aCgid2ViKyIpKSB7Ci0gICAgICAgIGlmIChpc1ZhbGlkUHJvdG9jb2woc2NoZW1l
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChpc1Byb3RvY29sV2hpdGVs
aXN0ZWQoc2NoZW1lKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZWMgPSBTRUNVUklUWV9F
UlI7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIE5hdmlnYXRvcjo6cmVnaXN0ZXJQcm90
b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW1fZnJhbWUp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3Ry
aW5nIGJhc2VVUkwgPSBkb2N1bWVudC0+YmFzZVVSTCgpLmJhc2VBc1N0cmluZygpOwotCi0gICAg
aWYgKCF2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUsIGVj
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsK
LSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIHBhZ2UtPmNocm9tZSgpLT5y
ZWdpc3RlclByb3RvY29sSGFuZGxlcihzY2hlbWUsIGJhc2VVUkwsIHVybCwgbV9mcmFtZS0+ZGlz
cGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0aXRsZSkpOwotfQotI2VuZGlmCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24g
MTA4NDQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNjAsMTAgKzYwLDYgQEAgcHVibGljOgogICAgIC8vIFJlbGlucXVpc2hlcyB0aGUgc3Rv
cmFnZSBsb2NrLCBpZiBvbmUgZXhpc3RzLgogICAgIHZvaWQgZ2V0U3RvcmFnZVVwZGF0ZXMoKTsK
IAotI2lmIEVOQUJMRShSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKQotICAgIHZvaWQgcmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIoY29uc3QgU3RyaW5nJiBzY2hlbWUsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBFeGNlcHRpb25Db2RlJik7Ci0jZW5kaWYKLQogICAgIHZv
aWQgcHJvdmlkZVN1cHBsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgUGFzc093blB0cjxOYXZp
Z2F0b3JTdXBwbGVtZW50Pik7CiAgICAgTmF2aWdhdG9yU3VwcGxlbWVudCogcmVxdWlyZVN1cHBs
ZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5pZGwJKHJldmlzaW9uIDEwODQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTEgKzQ1LDYgQEAgbW9kdWxlIHdpbmRvdyB7CiAj
ZW5kaWYKIAogICAgICAgICB2b2lkIGdldFN0b3JhZ2VVcGRhdGVzKCk7IC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtZXRob2Qgb3IgcmVuYW1lIHRvIHlpZWxkRm9yU3RvcmFnZVVwZGF0ZXMuCi0KLSNp
ZiBkZWZpbmVkKEVOQUJMRV9SRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKSAmJiBFTkFCTEVfUkVH
SVNURVJfUFJPVE9DT0xfSEFORExFUgotICAgICAgICB2b2lkIHJlZ2lzdGVyUHJvdG9jb2xIYW5k
bGVyKGluIERPTVN0cmluZyBzY2hlbWUsIGluIERPTVN0cmluZyB1cmwsIGluIERPTVN0cmluZyB0
aXRsZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotI2VuZGlmCiAgICAgfTsK
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JS
ZWdpc3RlclByb3RvY29sSGFuZGxlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
KyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCisgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlci5oIgorCisjaWYgRU5BQkxF
KFJFR0lTVEVSX1BST1RPQ09MX0hBTkRMRVIpCisKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIk5hdmlnYXRvci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBIYXNo
U2V0PFN0cmluZz4qIHByb3RvY29sV2hpdGVsaXN0OworCitzdGF0aWMgdm9pZCBpbml0UHJvdG9j
b2xIYW5kbGVyV2hpdGVsaXN0KCkKK3sKKyAgICBwcm90b2NvbFdoaXRlbGlzdCA9IG5ldyBIYXNo
U2V0PFN0cmluZz47CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByb3RvY29sc1tdID0geworICAg
ICAgICAiaXJjIiwKKyAgICAgICAgIm1haWx0byIsCisgICAgICAgICJtbXMiLAorICAgICAgICAi
bmV3cyIsCisgICAgICAgICJubnRwIiwKKyAgICAgICAgInNtcyIsCisgICAgICAgICJzbXN0byIs
CisgICAgICAgICJ0ZWwiLAorICAgICAgICAidXJuIiwKKyAgICAgICAgIndlYmNhbCIsCisgICAg
fTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgocHJvdG9jb2xz
KTsgKytpKQorICAgICAgICBwcm90b2NvbFdoaXRlbGlzdC0+YWRkKHByb3RvY29sc1tpXSk7Cit9
CisKK3N0YXRpYyBib29sIHZlcmlmeUN1c3RvbUhhbmRsZXJVUkwoY29uc3QgU3RyaW5nJiBiYXNl
VVJMLCBjb25zdCBTdHJpbmcmIHVybCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgLy8gVGhl
IHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCBpdCBpcyBhIFNZTlRBWF9FUlIgaWYgdGhlICIl
cyIgdG9rZW4gaXMKKyAgICAvLyBub3QgcHJlc2VudC4KKyAgICBzdGF0aWMgY29uc3QgY2hhciB0
b2tlbltdID0gIiVzIjsKKyAgICBpbnQgaW5kZXggPSB1cmwuZmluZCh0b2tlbik7CisgICAgaWYg
KC0xID09IGluZGV4KSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIC8vIEl0IGlzIGFsc28gYSBTWU5UQVhfRVJSIGlmIHRoZSBj
dXN0b20gaGFuZGxlciBVUkwsIGFzIGNyZWF0ZWQgYnkgcmVtb3ZpbmcKKyAgICAvLyB0aGUgIiVz
IiB0b2tlbiBhbmQgcHJlcGVuZGluZyB0aGUgYmFzZSB1cmwsIGRvZXMgbm90IHJlc29sdmUuCisg
ICAgU3RyaW5nIG5ld1VSTCA9IHVybDsKKyAgICBuZXdVUkwucmVtb3ZlKGluZGV4LCBXVEZfQVJS
QVlfTEVOR1RIKHRva2VuKSAtIDEpOworCisgICAgS1VSTCBiYXNlKFBhcnNlZFVSTFN0cmluZywg
YmFzZVVSTCk7CisgICAgS1VSTCBrdXJsKGJhc2UsIG5ld1VSTCk7CisKKyAgICBpZiAoa3VybC5p
c0VtcHR5KCkgfHwgIWt1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgYm9vbCBpc1Byb3RvY29sV2hpdGVsaXN0ZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7
CisgICAgaWYgKCFwcm90b2NvbFdoaXRlbGlzdCkKKyAgICAgICAgaW5pdFByb3RvY29sSGFuZGxl
cldoaXRlbGlzdCgpOworICAgIHJldHVybiBwcm90b2NvbFdoaXRlbGlzdC0+Y29udGFpbnMoc2No
ZW1lKTsKK30KKworc3RhdGljIGJvb2wgdmVyaWZ5UHJvdG9jb2xIYW5kbGVyU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoc2NoZW1lLnN0
YXJ0c1dpdGgoIndlYisiKSkgeworICAgICAgICBpZiAoaXNWYWxpZFByb3RvY29sKHNjaGVtZSkp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZWMgPSBTRUNVUklUWV9FUlI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoaXNQcm90b2NvbFdoaXRlbGlz
dGVkKHNjaGVtZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIGVjID0gU0VDVVJJVFlfRVJS
OworICAgIHJldHVybiBmYWxzZTsKK30KKworTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRs
ZXI6Ok5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKCkKK3sKK30KKworTmF2aWdhdG9y
UmVnaXN0ZXJQcm90b2NvbEhhbmRsZXI6On5OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxl
cigpCit7Cit9CisKK3ZvaWQgTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXI6OnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKE5hdmlnYXRvciogbmF2aWdhdG9yLCBjb25zdCBTdHJpbmcmIHNj
aGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmICghbmF2aWdhdG9yLT5mcmFtZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJh
c2VVUkwgPSBkb2N1bWVudC0+YmFzZVVSTCgpLmJhc2VBc1N0cmluZygpOworCisgICAgaWYgKCF2
ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIXZlcmlmeVByb3RvY29sSGFuZGxlclNjaGVtZShzY2hlbWUsIGVjKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUGFnZSogcGFnZSA9IG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFn
ZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZS0+Y2hyb21l
KCktPnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKHNjaGVtZSwgYmFzZVVSTCwgdXJsLCBuYXZpZ2F0
b3ItPmZyYW1lKCktPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2RpbmcodGl0bGUpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRT
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFu
ZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUmVnaXN0
ZXJQcm90b2NvbEhhbmRsZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorICoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIKKyAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNICisgKiBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlcl9oCisjZGVmaW5lIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyX2gKKwor
I2lmIEVOQUJMRShSRUdJU1RFUl9QUk9UT0NPTF9IQU5ETEVSKQorCisjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBOYXZpZ2F0b3I7CisKK3R5cGVkZWYgaW50IEV4Y2VwdGlvbkNv
ZGU7CisKK2NsYXNzIE5hdmlnYXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihOYXZpZ2F0b3IqLCBjb25z
dCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IEV4Y2VwdGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBOYXZpZ2F0b3JSZWdpc3RlclByb3Rv
Y29sSGFuZGxlcigpOworICAgIH5OYXZpZ2F0b3JSZWdpc3RlclByb3RvY29sSGFuZGxlcigpOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFJFR0lTVEVS
X1BST1RPQ09MX0hBTkRMRVIpCisKKyNlbmRpZiAvLyBOYXZpZ2F0b3JSZWdpc3RlclByb3RvY29s
SGFuZGxlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvclJlZ2lzdGVyUHJv
dG9jb2xIYW5kbGVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yUmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCittb2R1bGUgd2luZG93
IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVJFR0lTVEVSX1BST1RP
Q09MX0hBTkRMRVIsCisgICAgICAgIFN1cHBsZW1lbnRhbD1OYXZpZ2F0b3IKKyAgICBdIE5hdmln
YXRvclJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIHsKKyAgICAgICAgdm9pZCByZWdpc3RlclByb3Rv
Y29sSGFuZGxlcihpbiBET01TdHJpbmcgc2NoZW1lLCBpbiBET01TdHJpbmcgdXJsLCBpbiBET01T
dHJpbmcgdGl0bGUpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICB9Owor
Cit9Cg==
</data>
<flag name="review"
          id="130426"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="130427"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>