<?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>44627</bug_id>
          
          <creation_ts>2010-08-25 11:20:09 -0700</creation_ts>
          <short_desc>Add PassOwnArrayPtr</short_desc>
          <delta_ts>2010-08-26 14:38:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269380</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-25 11:20:09 -0700</bug_when>
    <thetext>Add a PassOwnArrayPtr class that does for OwnArrayPtr what PassOwnPtr does for OwnPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269384</commentid>
    <comment_count>1</comment_count>
      <attachid>65447</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-25 11:22:27 -0700</bug_when>
    <thetext>Created attachment 65447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269386</commentid>
    <comment_count>2</comment_count>
      <attachid>65447</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-25 11:24:26 -0700</bug_when>
    <thetext>Comment on attachment 65447
Patch

Do we want an analog to adoptPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269388</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-25 11:25:28 -0700</bug_when>
    <thetext>Attachment 65447 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
JavaScriptCore/wtf/OwnArrayPtr.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
JavaScriptCore/wtf/OwnArrayPtr.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/OwnArrayPtrCommon.h:26:  #ifndef header guard has wrong style, please use: OwnArrayPtrCommon_h  [build/header_guard] [5]
JavaScriptCore/wtf/OwnArrayPtrCommon.h:31:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
JavaScriptCore/wtf/PassOwnArrayPtr.h:26:  #ifndef header guard has wrong style, please use: PassOwnArrayPtr_h  [build/header_guard] [5]
JavaScriptCore/wtf/PassOwnArrayPtr.h:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 6 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269403</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-25 11:45:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65447 [details])
&gt; Do we want an analog to adoptPtr?

The patch adds adoptArrayPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269412</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-25 11:53:08 -0700</bug_when>
    <thetext>Attachment 65447 did not build on qt:
Build output: http://queues.webkit.org/results/3800284</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269564</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-25 15:53:30 -0700</bug_when>
    <thetext>Sam, you should probably fix the style complaints and the Qt breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270124</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-08-26 14:38:43 -0700</bug_when>
    <thetext>Landed in r66139.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65447</attachid>
            <date>2010-08-25 11:22:27 -0700</date>
            <delta_ts>2010-08-25 15:52:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>ptr.diff</filename>
            <type>text/plain</type>
            <size>25245</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MDI1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDgtMjUgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgUGFzc093bkFycmF5UHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDYyNworCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
IEFkZCB0aGUgbmV3IGZpbGVzLgorCisgICAgICAgICogd3RmL0ZvcndhcmQuaDoKKyAgICAgICAg
Rm9yd2FyZCBkZWNsYXJlIFBhc3NPd25BcnJheVB0ci4KKyAgICAgICAgCisgICAgICAgICogd3Rm
L093bkFycmF5UHRyLmg6CisgICAgICAgIE1pbWljIHRoZSBPd25QdHIgaW50ZXJmYWNlLgorCisg
ICAgICAgICogd3RmL093bkFycmF5UHRyQ29tbW9uLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpk
ZWxldGVPd25lZEFycmF5UHRyKToKKyAgICAgICAgTW92ZSBkZWxldGUgZnVuY3Rpb24gaGVyZSBz
byBpdCBjYW4gYmUgc2hhcmVkIGJ5IE93bkFycmF5UHRyIGFuZAorICAgICAgICBQYXNzT3duQXJy
YXlQdHIuCisKKyAgICAgICAgKiB3dGYvUGFzc093bkFycmF5UHRyLmg6IEFkZGVkLgorICAgICAg
ICBNaW1pYyB0aGUgUGFzc093blB0ciBpbnRlcmZhY2UuCisKIDIwMTAtMDgtMjUgIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1
c3Rhdm8gTm9yb25oYSBTaWx2YS4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA2
NjAxMykKKysrIEphdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC00NjEsMTEgKzQ2MSwxMyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlKYXZhU2Ny
aXB0Q29yZS93dGYvTm90Rm91bmQuaCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRy
LmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9Pd25GYXN0TWFsbG9jUHRyLmggXAorCUphdmFTY3Jp
cHRDb3JlL3d0Zi9Pd25BcnJheVB0ckNvbW1vbi5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvT3du
UHRyQ29tbW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9Pd25QdHIuaCBcCiAJSmF2YVNjcmlw
dENvcmUvd3RmL1BhZ2VBbGxvY2F0aW9uLmNwcCBcCiAJSmF2YVNjcmlwdENvcmUvd3RmL1BhZ2VB
bGxvY2F0aW9uLmggXAogCUphdmFTY3JpcHRDb3JlL3d0Zi9QYWdlUmVzZXJ2YXRpb24uaCBcCisJ
SmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0ci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93
dGYvUGFzc093blB0ci5oIFwKIAlKYXZhU2NyaXB0Q29yZS93dGYvUGFzc1JlZlB0ci5oIFwKIAlK
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCBcCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovV1RGL1dURi52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL1dURi9XVEYudmNwcm9qCShyZXZpc2lvbiA2NjAx
MykKKysrIEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9XVEYvV1RGLnZjcHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYgKzQyNSwxMCBAQAogCQkJPg0KIAkJPC9GaWxlPg0K
IAkJPEZpbGUNCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxPd25BcnJheVB0ckNvbW1vbi5o
Ig0KKwkJCT4NCisJCTwvRmlsZT4NCisJCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3
dGZcT3duUHRyQ29tbW9uLmgiDQogCQkJPg0KIAkJPC9GaWxlPg0KQEAgLTQ0MSw2ICs0NDUsMTAg
QEAKIAkJCT4NCiAJCTwvRmlsZT4NCiAJCTxGaWxlDQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlx3
dGZcUGFzc093bkFycmF5UHRyLmgiDQorCQkJPg0KKwkJPC9GaWxlPg0KKwkJPEZpbGUNCiAJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXHd0ZlxQYXNzT3duUHRyLmgiDQogCQkJPg0KIAkJPC9GaWxlPg0K
SW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjYwMTMpCisrKyBKYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC01MDksNiArNTA5LDggQEAKIAkJQkNERTNBQjgwRTZDODJGNTAwMTQ1M0E3IC8qIFN0cnVjdHVy
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNERTNB
QjEwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDREUzQjQzMEU2QzgzMkQwMDE0NTNBNyAvKiBT
dHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkNERTNBQjAwRTZDODJDRjAwMTQ1M0E3IC8qIFN0cnVjdHVyZS5jcHAgKi87IH07CiAJCUJD
RjYwNTE0MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDRkJFNjk2MTIyNTYwRTgwMDMwOUU5RCAvKiBQYXNzT3duQXJyYXlQdHIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkJFNjk1MTIyNTYwRTgwMDMw
OUU5RCAvKiBQYXNzT3duQXJyYXlQdHIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQ0ZCRTY5ODEyMjU2MUQyMDAzMDlFOUQgLyogT3duQXJyYXlQ
dHJDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRkJFNjk3MTIyNTYxRDIwMDMwOUU5RCAvKiBPd25BcnJheVB0ckNvbW1vbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRkQ4QzkyMEVFQjJF
RTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5j
cHAgKi87IH07CiAJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJF
RTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLzsgfTsKIAkJQzBBMjcyNjMwRTUwQTA2MzAwRTk2
RTE1IC8qIE5vdEZvdW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEEyNzIzRjBFNTA5RjFFMDBFOTZFMTUgLyogTm90Rm91bmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTA2Myw2ICsxMDY1LDgg
QEAKIAkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJnTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkNGNjU1M0IwQTIwNDhERTAwMzhBMTk0IC8qIE1hdGhFeHRyYXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhFeHRyYXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkNGQkU2OTUxMjI1NjBFODAwMzA5RTlEIC8qIFBhc3NPd25BcnJh
eVB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXNzT3duQXJyYXlQdHIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNGQkU2OTcxMjI1NjFEMjAwMzA5RTlE
IC8qIE93bkFycmF5UHRyQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE93bkFycmF5UHRyQ29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRkQ4
QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSnVtcFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKdW1wVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8qIE5vdEZvdW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdEZvdW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDcyLDEyICsxNDc2LDE0IEBACiAJCQkJOTMwM0Y1NjkwOTkxMTkwMDAwQUQ3
MUI4IC8qIE5vbmNvcHlhYmxlLmggKi8sCiAJCQkJQzBBMjcyM0YwRTUwOUYxRTAwRTk2RTE1IC8q
IE5vdEZvdW5kLmggKi8sCiAJCQkJOTMwM0Y1QTQwOTkxMUE1ODAwQUQ3MUI4IC8qIE93bkFycmF5
UHRyLmggKi8sCisJCQkJQkNGQkU2OTcxMjI1NjFEMjAwMzA5RTlEIC8qIE93bkFycmF5UHRyQ29t
bW9uLmggKi8sCiAJCQkJMEJERkZBRDEwRkM2MTZFQzAwRDY5RUY0IC8qIE93bkZhc3RNYWxsb2NQ
dHIuaCAqLywKIAkJCQk5MzAzRjU2NzA5OTExOEZBMDBBRDcxQjggLyogT3duUHRyLmggKi8sCiAJ
CQkJNDQwQjdBRUQwRkFGN0ZDQjAwNzMzMjNFIC8qIE93blB0ckNvbW1vbi5oICovLAogCQkJCTg2
MjdFNUU5MTFGMTI4MTkwMEEzMTNCNSAvKiBQYWdlQWxsb2NhdGlvbi5jcHAgKi8sCiAJCQkJODYy
N0U1RUExMUYxMjgxOTAwQTMxM0I1IC8qIFBhZ2VBbGxvY2F0aW9uLmggKi8sCiAJCQkJODY5MDIz
MTQxMjA5MkQ1QzAwNjMwQUY5IC8qIFBhZ2VSZXNlcnZhdGlvbi5oICovLAorCQkJCUJDRkJFNjk1
MTIyNTYwRTgwMDMwOUU5RCAvKiBQYXNzT3duQXJyYXlQdHIuaCAqLywKIAkJCQk0NERENDg1MjBG
QUVBODUwMDBENkI0RUIgLyogUGFzc093blB0ci5oICovLAogCQkJCTY1ODBGNzk1MDk0MDcwNTYw
MDgyQzIxOSAvKiBQYXNzUmVmUHRyLmggKi8sCiAJCQkJNjVENkQ4N0UwOUI1QTMyRTAwMDJFNEQ3
IC8qIFBsYXRmb3JtLmggKi8sCkBAIC0yMjM3LDYgKzIyNDMsOCBAQAogCQkJCTg2RjM4ODU5MTIx
MTMwQ0EwMDdBN0NFMyAvKiBBdG9taWNTdHJpbmdIYXNoLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkI2REEwMjEyMTMyQjlBMDAwRDMxNkYgLyogU3RyaW5nQ29uY2F0ZW5hdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2MkFGNEI2MTIyMzlDN0IwMDI0RTVCOCAvKiBEZWNpbWFsTnVtYmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlCQ0ZCRTY5NjEyMjU2MEU4MDAzMDlFOUQgLyogUGFzc093bkFycmF5
UHRyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQ0ZCRTY5ODEyMjU2MUQyMDAzMDlFOUQgLyogT3du
QXJyYXlQdHJDb21tb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjMzMCw3ICsyMzM4LDYgQEAKIAkJ
CWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI3NzEw
ODkwMkFGRTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVj
dCAiSmF2YVNjcmlwdENvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
Mi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JF
bmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS93dGYvRm9yd2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9Gb3J3YXJkLmgJKHJldmlzaW9uIDY2MDEzKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0Zv
cndhcmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBMaXN0UmVmUHRyOwogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGNsYXNzIE93bkFycmF5UHRyOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGNsYXNzIE93blB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzT3duQXJy
YXlQdHI7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc093blB0cjsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGNsYXNzIFJlZlB0cjsKQEAgLTQzLDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiB1
c2luZyBXVEY6Okxpc3RSZWZQdHI7CiB1c2luZyBXVEY6Ok93bkFycmF5UHRyOwogdXNpbmcgV1RG
OjpPd25QdHI7Cit1c2luZyBXVEY6OlBhc3NPd25BcnJheVB0cjsKIHVzaW5nIFdURjo6UGFzc093
blB0cjsKIHVzaW5nIFdURjo6UGFzc1JlZlB0cjsKIHVzaW5nIFdURjo6UmVmUHRyOwpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL093bkFycmF5UHRyLmgJKHJldmlzaW9uIDY2MDEzKQorKysgSmF2YVNjcmlwdENv
cmUvd3RmL093bkFycmF5UHRyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDMyICsyMiw0MyBAQAog
I2RlZmluZSBXVEZfT3duQXJyYXlQdHJfaAogCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSAiQXNzZXJ0aW9ucy5oIgorI2luY2x1ZGUgIk5vbmNvcHlhYmxlLmgiCisjaW5jbHVkZSAi
T3duQXJyYXlQdHJDb21tb24uaCIKKworLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFsbCBX
ZWJLaXQgY29kZSBjb21wYXRpYmxlIHdpdGggc3RyaWN0ZXIgcnVsZXMgYWJvdXQgT3duQXJyYXlQ
dHIuCisjZGVmaW5lIExPT1NFX09XTl9BUlJBWV9QVFIKIAogbmFtZXNwYWNlIFdURiB7CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzT3duQXJyYXlQdHI7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gUGFzc093bkFycmF5UHRyPFQ+IGFkb3B0QXJyYXlQdHIoVCopOworCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE93bkFycmF5UHRyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IE93bkFycmF5UHRyKFQqIHB0
ciA9IDApIDogbV9wdHIocHRyKSB7IH0KLSAgICAgICAgfk93bkFycmF5UHRyKCkgeyBzYWZlRGVs
ZXRlKG1fcHRyKTsgfQorICAgICAgICB0eXBlZGVmIFQqIFB0clR5cGU7CisKKyAgICAgICAgT3du
QXJyYXlQdHIoKSA6IG1fcHRyKDApIHsgfQogCi0gICAgICAgIFQqIGdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHRyOyB9Ci0gICAgICAgIFQqIHJlbGVhc2UoKSB7IFQqIHB0ciA9IG1fcHRyOyBtX3B0
ciA9IDA7IHJldHVybiBwdHI7IH0KKyAgICAgICAgLy8gU2VlIGNvbW1lbnQgaW4gUGFzc093bkFy
cmF5UHRyLmggZm9yIHdoeSB0aGlzIHRha2VzIGEgY29uc3QgcmVmZXJlbmNlLgorICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBPd25BcnJheVB0cihjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4m
IG8pOwogCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIGFuZCByZXBs
YWNlZCB3aXRoIFBhc3NPd25BcnJheVB0ci4gCi0gICAgICAgIHZvaWQgc2V0KFQqIHB0cikKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKLSAgICAg
ICAgICAgIFQqIG9sZFB0ciA9IG1fcHRyOwotICAgICAgICAgICAgbV9wdHIgPSBwdHI7Ci0gICAg
ICAgICAgICBzYWZlRGVsZXRlKG9sZFB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBj
b3B5IGNvbnN0cnVjdG9yIGlzIHVzZWQgaW1wbGljaXRseSBieSBnY2Mgd2hlbiBpdCBnZW5lcmF0
ZXMKKyAgICAgICAgLy8gdHJhbnNpZW50cyBmb3IgYXNzaWduaW5nIGEgUGFzc093bkFycmF5UHRy
PFQ+IG9iamVjdCB0byBhIHN0YWNrLWFsbG9jYXRlZAorICAgICAgICAvLyBPd25BcnJheVB0cjxU
PiBvYmplY3QuIEl0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgZXhwbGljaXRseSBhbmQgZ2NjCisg
ICAgICAgIC8vIHNob3VsZCBvcHRpbWl6ZSBhd2F5IHRoZSBjb25zdHJ1Y3RvciB3aGVuIGdlbmVy
YXRpbmcgY29kZS4KKyAgICAgICAgT3duQXJyYXlQdHIoY29uc3QgT3duQXJyYXlQdHI8VD4mKTsK
KworICAgICAgICB+T3duQXJyYXlQdHIoKSB7IGRlbGV0ZU93bmVkQXJyYXlQdHIobV9wdHIpOyB9
CisKKyAgICAgICAgUHRyVHlwZSBnZXQoKSBjb25zdCB7IHJldHVybiBtX3B0cjsgfQogCiAgICAg
ICAgIHZvaWQgY2xlYXIoKTsKKyAgICAgICAgUGFzc093bkFycmF5UHRyPFQ+IHJlbGVhc2UoKTsK
KyAgICAgICAgUHRyVHlwZSBsZWFrUHRyKCkgV0FSTl9VTlVTRURfUkVUVVJOOwogCiAgICAgICAg
IFQmIG9wZXJhdG9yKigpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgcmV0dXJuICptX3B0cjsgfQot
ICAgICAgICBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1cm4gbV9w
dHI7IH0KKyAgICAgICAgUHRyVHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9wdHIp
OyByZXR1cm4gbV9wdHI7IH0KIAogICAgICAgICBUJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90
IGkpIGNvbnN0IHsgQVNTRVJUKG1fcHRyKTsgQVNTRVJUKGkgPj0gMCk7IHJldHVybiBtX3B0cltp
XTsgfQogCkBAIC02MSwyOSArNzIsOTggQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIG9wZXJh
dG9yIFVuc3BlY2lmaWVkQm9vbFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA/ICZPd25BcnJh
eVB0cjo6bV9wdHIgOiAwOyB9CiAjZW5kaWYKIAorICAgICAgICBPd25BcnJheVB0ciYgb3BlcmF0
b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYpOworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBPd25BcnJheVB0ciYgb3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYpOwor
CiAgICAgICAgIHZvaWQgc3dhcChPd25BcnJheVB0ciYgbykgeyBzdGQ6OnN3YXAobV9wdHIsIG8u
bV9wdHIpOyB9CiAKLSAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgdm9pZCBzYWZlRGVsZXRl
KFQqKTsKKyNpZmRlZiBMT09TRV9PV05fQVJSQVlfUFRSCisgICAgICAgIGV4cGxpY2l0IE93bkFy
cmF5UHRyKFB0clR5cGUgcHRyKSA6IG1fcHRyKHB0cikgeyB9CisgICAgICAgIHZvaWQgc2V0KFB0
clR5cGUpOworI2VuZGlmCiAKLSAgICAgICAgVCogbV9wdHI7CisgICAgcHJpdmF0ZToKKyAgICAg
ICAgUHRyVHlwZSBtX3B0cjsKICAgICB9OwotICAgIAorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIE93bkFycmF5UHRyPFQ+OjpPd25BcnJheVB0
cihjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4mIG8pCisgICAgICAgIDogbV9wdHIoby5sZWFrUHRy
KCkpCisgICAgeworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lk
IE93bkFycmF5UHRyPFQ+OjpjbGVhcigpCiAgICAgewotICAgICAgICBUKiBwdHIgPSBtX3B0cjsK
KyAgICAgICAgUHRyVHlwZSBwdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSAwOworICAgICAg
ICBkZWxldGVPd25lZEFycmF5UHRyKHB0cik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4gaW5saW5lIFBhc3NPd25BcnJheVB0cjxUPiBPd25BcnJheVB0cjxUPjo6cmVsZWFzZSgp
CisgICAgeworICAgICAgICBQdHJUeXBlIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IDA7
CisgICAgICAgIHJldHVybiBhZG9wdEFycmF5UHRyKHB0cik7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIHR5cGVuYW1lIE93bkFycmF5UHRyPFQ+OjpQdHJUeXBlIE93
bkFycmF5UHRyPFQ+OjpsZWFrUHRyKCkKKyAgICB7CisgICAgICAgIFB0clR5cGUgcHRyID0gbV9w
dHI7CiAgICAgICAgIG1fcHRyID0gMDsKLSAgICAgICAgc2FmZURlbGV0ZShwdHIpOworICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB2
b2lkIE93bkFycmF5UHRyPFQ+OjpzYWZlRGVsZXRlKFQqIHB0cikKKyNpZmRlZiBMT09TRV9PV05f
QVJSQVlfUFRSCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIHZvaWQgT3duQXJyYXlQ
dHI8VD46OnNldChQdHJUeXBlIHB0cikKICAgICB7Ci0gICAgICAgIHR5cGVkZWYgY2hhciBrbm93
bltzaXplb2YoVCkgPyAxIDogLTFdOwotICAgICAgICBpZiAoc2l6ZW9mKGtub3duKSkKLSAgICAg
ICAgICAgIGRlbGV0ZSBbXSBwdHI7CisgICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0
cik7CisgICAgICAgIFB0clR5cGUgb2xkUHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gcHRy
OworICAgICAgICBkZWxldGVPd25lZFB0cihvbGRQdHIpOworICAgIH0KKyNlbmRpZgorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIE93bkFycmF5UHRyPFQ+JiBPd25BcnJheVB0cjxU
Pjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYgbykKKyAgICB7CisgICAgICAg
IFB0clR5cGUgcHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gby5sZWFrUHRyKCk7CisgICAg
ICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7CisgICAgICAgIGRlbGV0ZU93bmVkQXJy
YXlQdHIocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzd2FwKE93bkFycmF5UHRyPFQ+JiBhLCBPd25BcnJh
eVB0cjxUPiYgYikgeyBhLnN3YXAoYik7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgT3duQXJyYXlQdHI8VD4mIE93bkFycmF5UHRyPFQ+Ojpv
cGVyYXRvcj0oY29uc3QgUGFzc093bkFycmF5UHRyPFU+JiBvKQorICAgIHsKKyAgICAgICAgUHRy
VHlwZSBwdHIgPSBtX3B0cjsKKyAgICAgICAgbV9wdHIgPSBvLmxlYWtQdHIoKTsKKyAgICAgICAg
QVNTRVJUKCFwdHIgfHwgbV9wdHIgIT0gcHRyKTsKKyAgICAgICAgZGVsZXRlT3duZWRBcnJheVB0
cihwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGlubGluZSB2b2lkIHN3YXAoT3duQXJyYXlQdHI8VD4mIGEsIE93bkFycmF5UHRy
PFQ+JiBiKQorICAgIHsKKyAgICAgICAgYS5zd2FwKGIpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgT3du
QXJyYXlQdHI8VD4mIGEsIFUqIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5nZXQoKSA9PSBi
OyAKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KFQqIGEsIGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKSAKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhID09IGIuZ2V0KCk7IAorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgT3duQXJyYXlQ
dHI8VD4mIGEsIFUqIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5nZXQoKSAhPSBiOyAKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBv
cGVyYXRvciE9KFQqIGEsIGNvbnN0IE93bkFycmF5UHRyPFU+JiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGEgIT0gYi5nZXQoKTsgCisgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSBUKiBnZXRQdHIoY29uc3QgT3duQXJyYXlQdHI8VD4mIHApCiAgICAgewpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRyQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvd3RmL093bkFycmF5UHRyQ29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBKYXZh
U2NyaXB0Q29yZS93dGYvT3duQXJyYXlQdHJDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV1RGX093bkFycmF5UHRyQ29tbW9uX2gKKyNk
ZWZpbmUgV1RGX093bkFycmF5UHRyQ29tbW9uX2gKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBkZWxldGVPd25lZEFycmF5UHRyKFQqIHB0
cikKKyAgICB7CisgICAgICAgIHR5cGVkZWYgY2hhciBrbm93bltzaXplb2YoVCkgPyAxIDogLTFd
OworICAgICAgICBpZiAoc2l6ZW9mKGtub3duKSkKKyAgICAgICAgICAgIGRlbGV0ZSBbXSBwdHI7
CisgICAgfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vIFdURl9Pd25BcnJheVB0
ckNvbW1vbl9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGFzc093bkFycmF5UHRyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0ci5oCShyZXZpc2lv
biAwKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1Bhc3NPd25BcnJheVB0ci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdURl9QYXNzT3duQXJyYXlQdHJfaAorI2RlZmluZSBX
VEZfUGFzc093bkFycmF5UHRyX2gKKworI2luY2x1ZGUgIkFzc2VydGlvbnMuaCIKKyNpbmNsdWRl
ICJPd25BcnJheVB0ckNvbW1vbi5oIgorI2luY2x1ZGUgIlR5cGVUcmFpdHMuaCIKKworLy8gUmVt
b3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFsbCBXZWJLaXQgY29kZSBjb21wYXRpYmxlIHdpdGggc3Ry
aWN0ZXIgcnVsZXMgYWJvdXQgUGFzc093bkFycmF5UHRyLgorI2RlZmluZSBMT09TRV9QQVNTX09X
Tl9BUlJBWV9QVFIKKworbmFtZXNwYWNlIFdURiB7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBjbGFzcyBPd25BcnJheVB0cjsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBQYXNz
T3duQXJyYXlQdHI7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gUGFzc093bkFycmF5UHRyPFQ+
IGFkb3B0QXJyYXlQdHIoVCopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgUGFz
c093bkFycmF5UHRyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgVCogUHRyVHlwZTsK
KworICAgICAgICBQYXNzT3duQXJyYXlQdHIoKSA6IG1fcHRyKDApIHsgfQorCisgICAgICAgIC8v
IEl0IHNvbWV3aGF0IGJyZWFrcyB0aGUgdHlwZSBzeXN0ZW0gdG8gYWxsb3cgdHJhbnNmZXIgb2Yg
b3duZXJzaGlwIG91dCBvZgorICAgICAgICAvLyBhIGNvbnN0IFBhc3NPd25BcnJheVB0ci4gSG93
ZXZlciwgaXQgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gd29yayB3aXRoIFBhc3NPd25BcnJheVB0
cgorICAgICAgICAvLyB0ZW1wb3JhcmllcywgYW5kIHdlIGRvbid0IGhhdmUgYSBuZWVkIHRvIHVz
ZSByZWFsIGNvbnN0IFBhc3NPd25BcnJheVB0cnMgYW55d2F5LgorICAgICAgICBQYXNzT3duQXJy
YXlQdHIoY29uc3QgUGFzc093bkFycmF5UHRyJiBvKSA6IG1fcHRyKG8ubGVha1B0cigpKSB7IH0K
KyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUGFzc093bkFycmF5UHRyKGNvbnN0IFBhc3NP
d25BcnJheVB0cjxVPiYgbykgOiBtX3B0cihvLmxlYWtQdHIoKSkgeyB9CisKKyAgICAgICAgflBh
c3NPd25BcnJheVB0cigpIHsgZGVsZXRlT3duZWRBcnJheVB0cihtX3B0cik7IH0KKworICAgICAg
ICBQdHJUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICAgICAgdm9pZCBj
bGVhcigpOworICAgICAgICBQdHJUeXBlIGxlYWtQdHIoKSBjb25zdCBXQVJOX1VOVVNFRF9SRVRV
Uk47CisKKyAgICAgICAgVCYgb3BlcmF0b3IqKCkgY29uc3QgeyBBU1NFUlQobV9wdHIpOyByZXR1
cm4gKm1fcHRyOyB9CisgICAgICAgIFB0clR5cGUgb3BlcmF0b3ItPigpIGNvbnN0IHsgQVNTRVJU
KG1fcHRyKTsgcmV0dXJuIG1fcHRyOyB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25z
dCB7IHJldHVybiAhbV9wdHI7IH0KKworICAgICAgICAvLyBUaGlzIGNvbnZlcnNpb24gb3BlcmF0
b3IgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gYm9vbCBidXQgbm90IHRvIG90aGVyIGlu
dGVnZXIgdHlwZXMuCisjaWYgQ09NUElMRVIoV0lOU0NXKQorICAgICAgICBvcGVyYXRvciBib29s
KCkgY29uc3QgeyByZXR1cm4gbV9wdHI7IH0KKyNlbHNlCisgICAgICAgIHR5cGVkZWYgUHRyVHlw
ZSBQYXNzT3duQXJyYXlQdHI6OipVbnNwZWNpZmllZEJvb2xUeXBlOworICAgICAgICBvcGVyYXRv
ciBVbnNwZWNpZmllZEJvb2xUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wdHIgPyAmUGFzc093bkFy
cmF5UHRyOjptX3B0ciA6IDA7IH0KKyNlbmRpZgorCisgICAgICAgIFBhc3NPd25BcnJheVB0ciYg
b3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYpOworICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBQYXNzT3duQXJyYXlQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzT3duQXJyYXlQ
dHI8VT4mKTsKKworICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBmcmllbmQgUGFzc093bkFy
cmF5UHRyPFU+IGFkb3B0QXJyYXlQdHIoVSopOworCisjaWZkZWYgTE9PU0VfUEFTU19PV05fQVJS
QVlfUFRSCisgICAgICAgIFBhc3NPd25BcnJheVB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIp
IHsgfQorICAgICAgICBQYXNzT3duQXJyYXlQdHImIG9wZXJhdG9yPShQdHJUeXBlKTsKKyNlbmRp
ZgorCisgICAgcHJpdmF0ZToKKyNpZm5kZWYgTE9PU0VfUEFTU19PV05fQVJSQVlfUFRSCisgICAg
ICAgIGV4cGxpY2l0IFBhc3NPd25BcnJheVB0cihQdHJUeXBlIHB0cikgOiBtX3B0cihwdHIpIHsg
fQorI2VuZGlmCisKKyAgICAgICAgbXV0YWJsZSBQdHJUeXBlIG1fcHRyOworICAgIH07CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBQYXNzT3duQXJyYXlQdHI8VD46OmNs
ZWFyKCkKKyAgICB7CisgICAgICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRy
ID0gMDsKKyAgICAgICAgZGVsZXRlT3duZWRBcnJheVB0cihwdHIpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSB0eXBlbmFtZSBQYXNzT3duQXJyYXlQdHI8VD46OlB0
clR5cGUgUGFzc093bkFycmF5UHRyPFQ+OjpsZWFrUHRyKCkgY29uc3QKKyAgICB7CisgICAgICAg
IFB0clR5cGUgcHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gMDsKKyAgICAgICAgcmV0dXJu
IHB0cjsKKyAgICB9CisKKyNpZmRlZiBMT09TRV9QQVNTX09XTl9BUlJBWV9QVFIKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUGFzc093bkFycmF5UHRyPFQ+JiBQYXNzT3duQXJyYXlQ
dHI8VD46Om9wZXJhdG9yPShQdHJUeXBlIG9wdHIpCisgICAgeworICAgICAgICBQdHJUeXBlIHB0
ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IG9wdHI7CisgICAgICAgIEFTU0VSVCghcHRyIHx8
IG1fcHRyICE9IHB0cik7CisgICAgICAgIGlmIChwdHIpCisgICAgICAgICAgICBkZWxldGVPd25l
ZEFycmF5UHRyKHB0cik7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisjZW5kaWYKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBQYXNzT3duQXJyYXlQdHI8VD4mIFBhc3NP
d25BcnJheVB0cjxUPjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYgb3B0cikK
KyAgICB7CisgICAgICAgIFB0clR5cGUgcHRyID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gb3B0
ci5sZWFrUHRyKCk7CisgICAgICAgIEFTU0VSVCghcHRyIHx8IG1fcHRyICE9IHB0cik7CisgICAg
ICAgIGlmIChwdHIpCisgICAgICAgICAgICBkZWxldGVPd25lZEFycmF5UHRyKHB0cik7CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUGFzc093bkFycmF5UHRyPFQ+JiBQYXNzT3duQXJyYXlQ
dHI8VD46Om9wZXJhdG9yPShjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4mIG9wdHIpCisgICAgewor
ICAgICAgICBQdHJUeXBlIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IG9wdHIubGVha1B0
cigpOworICAgICAgICBBU1NFUlQoIXB0ciB8fCBtX3B0ciAhPSBwdHIpOworICAgICAgICBpZiAo
cHRyKQorICAgICAgICAgICAgZGVsZXRlT3duZWRBcnJheVB0cihwdHIpOworICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzT3duQXJyYXlQdHI8VD4mIGEsIGNvbnN0
IFBhc3NPd25BcnJheVB0cjxVPiYgYikgCisgICAgeworICAgICAgICByZXR1cm4gYS5nZXQoKSA9
PSBiLmdldCgpOyAKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhc3NPd25BcnJheVB0cjxUPiYgYSwgY29u
c3QgT3duQXJyYXlQdHI8VT4mIGIpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0g
Yi5nZXQoKTsgCisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgT3duQXJyYXlQdHI8VD4mIGEsIGNvbnN0
IFBhc3NPd25BcnJheVB0cjxVPiYgYikgCisgICAgeworICAgICAgICByZXR1cm4gYS5nZXQoKSA9
PSBiLmdldCgpOyAKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzT3duQXJyYXlQdHI8VD4mIGEs
IFUqIGIpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGEuZ2V0KCkgPT0gYjsgCisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJh
dG9yPT0oVCogYSwgY29uc3QgUGFzc093bkFycmF5UHRyPFU+JiBiKSAKKyAgICB7CisgICAgICAg
IHJldHVybiBhID09IGIuZ2V0KCk7IAorICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NPd25BcnJh
eVB0cjxUPiYgYSwgY29uc3QgUGFzc093bkFycmF5UHRyPFU+JiBiKSAKKyAgICB7CisgICAgICAg
IHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7IAorICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFBhc3NP
d25BcnJheVB0cjxUPiYgYSwgY29uc3QgT3duQXJyYXlQdHI8VT4mIGIpIAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsgCisgICAgfQorICAgIAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgT3du
QXJyYXlQdHI8VD4mIGEsIGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYgYikgCisgICAgeworICAg
ICAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOyAKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBQ
YXNzT3duQXJyYXlQdHI8VD4mIGEsIFUqIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5nZXQo
KSAhPSBiOyAKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShUKiBhLCBjb25zdCBQYXNzT3duQXJyYXlQdHI8VT4m
IGIpIAorICAgIHsKKyAgICAgICAgcmV0dXJuIGEgIT0gYi5nZXQoKTsgCisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFBhc3NPd25BcnJheVB0cjxUPiBhZG9wdEFycmF5
UHRyKFQqIHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBQYXNzT3duQXJyYXlQdHI8VD4ocHRy
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUg
UGFzc093bkFycmF5UHRyPFQ+IHN0YXRpY19wb2ludGVyX2Nhc3QoY29uc3QgUGFzc093bkFycmF5
UHRyPFU+JiBwKSAKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdEFycmF5UHRyKHN0YXRpY19j
YXN0PFQqPihwLmxlYWtQdHIoKSkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IGlubGluZSBQYXNzT3duQXJyYXlQdHI8VD4gY29uc3RfcG9pbnRlcl9jYXN0
KGNvbnN0IFBhc3NPd25BcnJheVB0cjxVPiYgcCkgCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRBcnJheVB0cihjb25zdF9jYXN0PFQqPihwLmxlYWtQdHIoKSkpOworICAgIH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUKiBnZXRQdHIoY29uc3QgUGFzc093bkFycmF5UHRy
PFQ+JiBwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHAuZ2V0KCk7CisgICAgfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpQYXNzT3duQXJyYXlQdHI7Cit1c2luZyBXVEY6OmFk
b3B0QXJyYXlQdHI7Cit1c2luZyBXVEY6OmNvbnN0X3BvaW50ZXJfY2FzdDsKK3VzaW5nIFdURjo6
c3RhdGljX3BvaW50ZXJfY2FzdDsKKworI2VuZGlmIC8vIFdURl9QYXNzT3duQXJyYXlQdHJfaApJ
bmRleDogSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRH
bHVlL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwMTYpCisrKyBKYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0yNSAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBQYXNzT3duQXJyYXlQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjI3CisKKyAgICAgICAgQWRkIG5ldyBmb3J3YXJk
aW5nIGhlYWRlci4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJheVB0
ckNvbW1vbi5oOiBBZGRlZC4KKwogMjAxMC0wOC0yMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCklu
ZGV4OiBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvT3duQXJyYXlQdHJDb21t
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0R2x1ZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYv
T3duQXJyYXlQdHJDb21tb24uaAkocmV2aXNpb24gMCkKKysrIEphdmFTY3JpcHRHbHVlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJheVB0ckNvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3duQXJyYXlQdHJDb21tb24uaD4KSW5k
ZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2NjAxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTAtMDgtMjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgUGFzc093
bkFycmF5UHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NDYyNworCisgICAgICAgIEFkZCBuZXcgZm9yd2FyZGluZyBoZWFkZXJzLgorCisgICAgICAg
ICogRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093bkFycmF5UHRyQ29tbW9uLmg6IEFkZGVkLgorICAg
ICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzT3duQXJyYXlQdHIuaDogQWRkZWQuCisK
IDIwMTAtMDgtMjUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBXZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJheVB0ckNvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL093bkFycmF5UHRyQ29tbW9uLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9Pd25BcnJheVB0ckNvbW1vbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfT3duQXJyYXlQ
dHJDb21tb25faAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Pd25BcnJheVB0ckNvbW1vbl9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT3duQXJyYXlQdHJDb21tb24uaD4KKyNlbmRpZgpJbmRleDog
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc093bkFycmF5UHRyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy93dGYvUGFzc093bkFycmF5UHRyLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QYXNzT3duQXJyYXlQ
dHIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX1Bh
c3NPd25BcnJheVB0cl9oCisjZGVmaW5lIFdlYkNvcmVfRldEX1Bhc3NPd25BcnJheVB0cl9oCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUGFzc093bkFycmF5UHRyLmg+CisjZW5kaWYK
</data>
<flag name="review"
          id="54233"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>