<?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>70068</bug_id>
          
          <creation_ts>2011-10-13 15:50:54 -0700</creation_ts>
          <short_desc>Reflective Arguments retrieval should be hardened for the possibility of inlining</short_desc>
          <delta_ts>2011-10-14 15:00:49 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69996</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>483581</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-13 15:50:54 -0700</bug_when>
    <thetext>Currently, to retrieve the Arguments of a function on the call stack, we assume that the call stack contains an explicit entry for that function.  This won&apos;t be the case if the function is inlined.  Call stack walking for the purpose of JS-visible reflection should be able to rematerialize call frames of inlined functions, and arguments retrieval should be hardened for this possibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483593</commentid>
    <comment_count>1</comment_count>
      <attachid>110920</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-13 15:59:17 -0700</bug_when>
    <thetext>Created attachment 110920
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483594</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-13 16:01:39 -0700</bug_when>
    <thetext>Attachment 110920 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/bytecode/CodeOrigin.h:26:  #ifndef header guard has wrong style, please use: CodeOrigin_h  [build/header_guard] [5]
Total errors found: 1 in 17 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>483597</commentid>
    <comment_count>3</comment_count>
      <attachid>110920</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-10-13 16:06:21 -0700</bug_when>
    <thetext>Comment on attachment 110920
the patch

Fix the minor style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484328</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-14 15:00:49 -0700</bug_when>
    <thetext>Landed in r97512.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110920</attachid>
            <date>2011-10-13 15:59:17 -0700</date>
            <delta_ts>2011-10-13 16:06:21 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inlinecallframe_patch_1.diff</filename>
            <type>text/plain</type>
            <size>31530</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTc0MTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAK
KzIwMTEtMTAtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZsZWN0aXZlIEFyZ3VtZW50cyByZXRyaWV2YWwgc2hvdWxkIGJlIGhhcmRlbmVkIGZvciB0aGUK
KyAgICAgICAgcG9zc2liaWxpdHkgb2YgaW5saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBDb2RlQmxvY2sgY2FuIG5vdyB0cmFjaywg
YXMgcGFydCBvZiBpdHMgUmFyZURhdGEsIHRoZSB2aXJ0dWFsIGlubGluZQorICAgICAgICBzdGFj
ayBhdCBjYWxsc2l0ZXMuIENhbGxGcmFtZSB3YWxraW5nIGNhbiBub3cgcmVtYXRlcmlhbGl6ZSAi
aW5saW5lIgorICAgICAgICBDYWxsRnJhbWVzIGJ5IGNvbWJpbmluZyB0aGUgbWV0YS1kYXRhIGlu
IENvZGVCbG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbgorICAgICAgICBhbHJlYWR5IGluIHRoZSBK
UyBzdGFjay4gQXJndW1lbnRzIGNhbiBub3cgc2FmZWx5IHJldHJpZXZlIHRoZQorICAgICAgICBh
cmd1bWVudHMgZnJvbSBpbmxpbmUgQ2FsbEZyYW1lcy4KKyAgICAgICAgCisgICAgICAgIFRoZSBE
RkcgYWxyZWFkeSBoYWQgdGhlIG5vdGlvbiBvZiBhICJDb2RlT3JpZ2luIiBpbiBwcmVwYXJhdGlv
biBmb3IKKyAgICAgICAgaW5saW5pbmcuIFRoaXMgbm90aW9uIHdpbGwgbm93IGJlIHNhdmVkIGlu
dG8gdGhlIENvZGVCbG9jaywgaWYgdGhlIERGRworICAgICAgICBoYWQgZG9uZSBpbmxpbmluZy4g
U28sIENvZGVPcmlnaW4gaGFzIGJlZW4gbW92ZWQgdG8gYnl0ZWNvZGUvIGFuZCBoYXMKKyAgICAg
ICAgYmVlbiBjaGFuZ2VkIHRvIGJlaGF2ZSBtb3JlIGxpa2UgYSBzdHJ1Y3Qgc2luY2UgdGhhdCBp
cyBob3cgaXQncworICAgICAgICBtZWFudCB0byBiZSB1c2VkLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aW5saW5lQ2FsbEZyYW1lcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Y29kZU9yaWdpbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhh
c0NvZGVPcmlnaW5zKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb2RlT3JpZ2luRm9yUmV0
dXJuKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpDb2RlT3JpZ2luOjpDb2RlT3JpZ2luKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6
aXNTZXQpOgorICAgICAgICAoSlNDOjpnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbik6
CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lOjppc0lubGluZUNhbGxGcmFtZSk6CisgICAgICAgIChK
U0M6OkNhbGxGcmFtZTo6dHJ1ZUNhbGxlckZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9D
YWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjppbmxpbmVDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OnNldElubGluZUNhbGxGcmFtZSk6CisgICAgICAgIChK
U0M6OkV4ZWNTdGF0ZTo6aXNJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpFeGVjU3Rh
dGU6OnRydWVDYWxsZXJGcmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZmluZEZ1bmN0aW9uQ2FsbEZyYW1lKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rlci5oOgorICAgICAgICAoSlNDOjpSZWdpc3Rl
cjo6b3BlcmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6OmlubGluZUNhbGxGcmFtZSk6
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRz
OjpnZXRBcmd1bWVudHNEYXRhKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpmaW5pc2hDcmVh
dGlvbkJ1dERvbnRDb3B5UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb25BbmRD
b3B5UmVnaXN0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpwYXJhbWV0ZXJDb3VudCk6CisKIDIwMTEtMTAtMTMg
IEdhdmluIEJhcnJhY2xvdWdoICA8YmFyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3Bl
Y3VsYXRpdmUgYnVpbGQgZml4IGZvciAhREZHIGJ1aWxkcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2
ICs4Myw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FdmFsQ29kZUNhY2hlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2
aXNpb24gOTczNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTQ0Niw2ICsxNDQ2LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGJ5dGVjb2RlXENvZGVPcmlnaW4uaCIKKwkJCQk+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcRXZhbENvZGVD
YWNoZS5oIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2
NCw3IEBACiAJCTBGOTYzQjJEMTNGODU0MDIwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IyQTEzRjg1
M0JEMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYzQjJGMTNGQzY2QkIwMDAyRDlCMiAvKiBNZXRh
QWxsb2NhdG9ySGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjk2M0IyRTEzRkM2NkFFMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTYz
QjM4MTNGQzZGRTkwMDAyRDlCMiAvKiBWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTYzQjM2MTNGQzZGREUwMDAyRDlCMiAvKiBW
YWx1ZVByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRkJEN0U2OTE0NDc5OTk2MDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRDdFNjcxNDQ3OTk4RjAw
NDgxMzE1IC8qIENvZGVPcmlnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQTE0MDQzQkY1MDBDRkE2MDMgLyogV3JpdGVCYXJyaWVy
U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZDODE1MDkxNDA0M0JEMjAwQ0ZBNjAzIC8qIFdyaXRlQmFycmllclN1cHBvcnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkM4MTUwQjE0MDQz
QzBFMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM4MTUwODE0MDQzQkNBMDBDRkE2MDMgLyog
V3JpdGVCYXJyaWVyU3VwcG9ydC5jcHAgKi87IH07CiAJCTBGQzgxNTE1MTQwNTExOUIwMENGQTYw
MyAvKiBWVGFibGVTcGVjdHJ1bS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgyOCw2
ICs4MjksNyBAQAogCQkwRjk2M0IyQjEzRjg1M0M3MDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZXRhQWxsb2NhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMkUxM0ZDNjZBRTAwMDJEOUIy
IC8qIE1ldGFBbGxvY2F0b3JIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWV0YUFsbG9jYXRvckhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Rjk2M0IzNjEzRkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZhbHVlUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRkJEN0U2NzE0NDc5OThGMDA0ODEzMTUgLyogQ29kZU9yaWdpbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlT3JpZ2luLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzgxNTA4MTQwNDNCQ0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBw
b3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRlQmFycmll
clN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkM4MTUwOTE0MDQz
QkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXcml0ZUJhcnJpZXJTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWVGFibGVTcGVjdHJ1bS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDAwLDYgKzI0MDIsNyBAQAogCQk5NjlB
MDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2Rl
T3JpZ2luLmggKi8sCiAJCQkJMEZEODJFOEUxNDIwN0E1MTAwMTc5Qzk0IC8qIFZhbHVlUHJvZmls
ZS5jcHAgKi8sCiAJCQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUu
Y3BwICovLAogCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBQcmVkaWN0ZWRUeXBlLmgg
Ki8sCkBAIC0yODk2LDYgKzI4OTksNyBAQAogCQkJCTBGNjIwMTc2MTQzRkNEM0IwMDY4Qjc3QyAv
KiBERkdCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3NzE0M0ZDRDNGMDA2
OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MjAxNzgx
NDNGQ0Q0NDAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGQkQ3RTY5MTQ0Nzk5OTYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDk3MzQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAj
ZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAi
Q29tcGFjdEpJVENvZGVNYXAuaCIKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1ZGUg
IkV2YWxDb2RlQ2FjaGUuaCIKQEAgLTE4Miw2ICsxODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAvLyAoZ2l2ZW4gYXMgYW4gb2Zmc2V0IGluIGJ5dGVzIGludG8gdGhlIEpJVCBjb2RlKSBiYWNr
IHRvCiAgICAgLy8gdGhlIGJ5dGVjb2RlIGluZGV4IG9mIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVj
b2RlIG9wZXJhdGlvbi4KICAgICAvLyBUaGlzIGlzIHRoZW4gdXNlZCB0byBsb29rIHVwIHRoZSBj
b3JyZXNwb25kaW5nIGhhbmRsZXIuCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUg
aW5saW5pbmcgYXdhcmUhIEN1cnJlbnRseSBpdCBpc24ndAorICAgIC8vIGJlY2F1c2Ugd2UgbmV2
ZXIgaW5saW5lIGNvZGUgdGhhdCBoYXMgZXhjZXB0aW9uIGhhbmRsZXJzLgogICAgIHN0cnVjdCBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCB7CiAgICAgICAgIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGNhbGxSZXR1cm5PZmZzZXQsIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgOiBjYWxsUmV0dXJuT2Zmc2V0KGNhbGxSZXR1cm5P
ZmZzZXQpCkBAIC02MTYsNiArNjE5LDMyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShERkdfSklUKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8SW5s
aW5lQ2FsbEZyYW1lLCA0PiYgaW5saW5lQ2FsbEZyYW1lcygpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX2lubGluZUNhbGxGcmFtZXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IFZlY3RvcjxDb2RlT3JpZ2luQXRDYWxsUmV0dXJuT2Zmc2V0PiYgY29kZU9yaWdpbnMoKQorICAg
ICAgICB7CisgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jb2RlT3JpZ2luczsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gSGF2aW5nIGNvZGUgb3JpZ2lucyBpbXBsaWVzIHRoYXQgdGhlcmUgaGFz
IGJlZW4gc29tZSBpbmxpbmluZy4KKyAgICAgICAgYm9vbCBoYXNDb2RlT3JpZ2lucygpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhICYmICEhbV9yYXJlRGF0YS0+bV9j
b2RlT3JpZ2lucy5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENvZGVPcmln
aW4gY29kZU9yaWdpbkZvclJldHVybihSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChoYXNDb2RlT3JpZ2lucygpKTsKKyAgICAgICAg
ICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCwgdW5z
aWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXRGb3JDb2RlT3JpZ2luPihjb2RlT3JpZ2lucygpLmJl
Z2luKCksIGNvZGVPcmlnaW5zKCkuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSktPmNvZGVPcmlnaW47CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAg
ICAgIC8vIENvbnN0YW50IFBvb2wKIAogICAgICAgICBzaXplX3QgbnVtYmVyT2ZJZGVudGlmaWVy
cygpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcnMuc2l6ZSgpOyB9CkBAIC05OTksNiArMTAy
OCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICAgICAgVmVj
dG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiBtX2NhbGxSZXR1cm5JbmRleFZl
Y3RvcjsKICNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQorICAgICAgICAgICAgU2VnbWVudGVk
VmVjdG9yPElubGluZUNhbGxGcmFtZSwgND4gbV9pbmxpbmVDYWxsRnJhbWVzOworICAgICAgICAg
ICAgVmVjdG9yPENvZGVPcmlnaW5BdENhbGxSZXR1cm5PZmZzZXQ+IG1fY29kZU9yaWdpbnM7Cisj
ZW5kaWYKICAgICAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogICAgICAgICBmcmllbmQgdm9p
ZCBXVEY6OmRlbGV0ZU93bmVkUHRyPFJhcmVEYXRhPihSYXJlRGF0YSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIElubGluZVN0YWNrX2gKKyNkZWZpbmUgSW5saW5lU3RhY2tfaAorCisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IElubGluZUNhbGxGcmFtZTsKK2NsYXNzIEV4ZWN1dGFibGVCYXNlOworCitzdHJ1Y3QgQ29kZU9y
aWdpbiB7CisgICAgdWludDMyX3QgYnl0ZWNvZGVJbmRleDsKKyAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZTsKKyAgICAKKyAgICBDb2RlT3JpZ2luKCkKKyAgICAgICAgOiBieXRl
Y29kZUluZGV4KHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkKKyAgICAgICAg
LCBpbmxpbmVDYWxsRnJhbWUoMCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IENv
ZGVPcmlnaW4odWludDMyX3QgYnl0ZWNvZGVJbmRleCkKKyAgICAgICAgOiBieXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpCisgICAgICAgICwgaW5saW5lQ2FsbEZyYW1lKDApCisgICAgeworICAg
IH0KKyAgICAKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gYnl0ZWNvZGVJbmRleCAh
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCk7IH0KK307CisKK3N0cnVjdCBJ
bmxpbmVDYWxsRnJhbWUgeworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlOworICAgIHVu
c2lnbmVkIHN0YWNrT2Zmc2V0OworICAgIHVuc2lnbmVkIGNhbGxlZVZSOworICAgIENvZGVPcmln
aW4gY2FsbGVyOworICAgIHVuc2lnbmVkIG51bUFyZ3VtZW50c0luY2x1ZGluZ1RoaXM7Cit9Owor
CitzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7CisgICAgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luOworICAgIHVuc2lnbmVkIGNhbGxSZXR1cm5PZmZzZXQ7Cit9OworCitpbmxpbmUg
dW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldEZvckNvZGVPcmlnaW4oQ29kZU9yaWdpbkF0Q2Fs
bFJldHVybk9mZnNldCogZGF0YSkKK3sKKyAgICByZXR1cm4gZGF0YS0+Y2FsbFJldHVybk9mZnNl
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBJbmxpbmVTdGFja19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShy
ZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBKSVRDb21waWxl
cjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9jYWxscy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKG1fY2FsbHNbaV0ubV9o
YW5kbGVzRXhjZXB0aW9ucykgewogICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJldHVybkFkZHJl
c3NPZmZzZXQgPSBsaW5rQnVmZmVyLnJldHVybkFkZHJlc3NPZmZzZXQobV9jYWxsc1tpXS5tX2Nh
bGwpOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGV4Y2VwdGlvbkluZm8gPSBtX2NhbGxzW2ld
Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQg
ZXhjZXB0aW9uSW5mbyA9IG1fY2FsbHNbaV0ubV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CiAg
ICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPmNhbGxSZXR1cm5JbmRleFZlY3RvcigpLmFwcGVu
ZChDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldChyZXR1cm5BZGRyZXNzT2Zmc2V0LCBl
eGNlcHRpb25JbmZvKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAj
aWYgRU5BQkxFKERGR19KSVQpCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHT3BlcmFuZHMuaCIKICNpbmNsdWRlICJERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCkBAIC04NCwzMyArODUsNiBA
QCBzdHJ1Y3QgTm9kZUluZGV4VHJhaXRzIHsKICAgICBzdGF0aWMgTm9kZUluZGV4IGRlZmF1bHRW
YWx1ZSgpIHsgcmV0dXJuIE5vTm9kZTsgfQogfTsKIAotLy8gSW5mb3JtYXRpb24gdXNlZCB0byBt
YXAgYmFjayBmcm9tIGFuIGV4Y2VwdGlvbiB0byBhbnkgaGFuZGxlci9zb3VyY2UgaW5mb3JtYXRp
b24sCi0vLyBhbmQgdG8gaW1wbGVtZW50IE9TUi4KLS8vIChQcmVzZW50bHkgaW1wbGVtZW50ZWQg
YXMgYSBieXRlY29kZSBpbmRleCkuCi1jbGFzcyBDb2RlT3JpZ2luIHsKLXB1YmxpYzoKLSAgICBD
b2RlT3JpZ2luKCkKLSAgICAgICAgOiBtX2J5dGVjb2RlSW5kZXgoc3RkOjpudW1lcmljX2xpbWl0
czx1aW50MzJfdD46Om1heCgpKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgZXhwbGljaXQgQ29k
ZU9yaWdpbih1aW50MzJfdCBieXRlY29kZUluZGV4KQotICAgICAgICA6IG1fYnl0ZWNvZGVJbmRl
eChieXRlY29kZUluZGV4KQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBpc1NldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVJbmRleCAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWF4KCk7IH0KLSAgICAKLSAgICB1aW50MzJfdCBieXRlY29kZUluZGV4KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChpc1NldCgpKTsKLSAgICAgICAgcmV0dXJuIG1fYnl0ZWNv
ZGVJbmRleDsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIHVpbnQzMl90IG1fYnl0ZWNvZGVJ
bmRleDsKLX07Ci0KIHN0cnVjdCBTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSB7CiAgICAgU3RydWN0
dXJlKiBwcmV2aW91c1N0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkocmV2aXNpb24gOTczNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjcsMTAgKzcy
NywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IC8vIHRvIHRoZSAqbmV4dCogaW5zdHJ1Y3Rpb24sIHNpbmNlIHdlJ3ZlIGFscmVhZHkgImV4ZWN1
dGVkIiB0aGUKICAgICAgICAgLy8gU2V0TG9jYWwgYW5kIHdoYXRldmVyIG90aGVyIERGRyBOb2Rl
cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lCiAgICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4
IGFzIHRoZSBTZXRMb2NhbC4KLSAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleEZvck9TUiA9
PSBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCgpKTsKKyAgICAgICAgQVNTRVJUKG1fYnl0
ZWNvZGVJbmRleEZvck9TUiA9PSBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAg
ICAgIE5vZGUmIG5leHROb2RlID0gYXQobV9jb21waWxlSW5kZXggKyAxKTsKICAgICAgICAgCi0g
ICAgICAgIG1fYnl0ZWNvZGVJbmRleEZvck9TUiA9IG5leHROb2RlLmNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCgpOworICAgICAgICBtX2J5dGVjb2RlSW5kZXhGb3JPU1IgPSBuZXh0Tm9kZS5jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXg7CiAgICAgICAgIAogICAgICAgICBQcmVkaWN0ZWRUeXBlIHBy
ZWRpY3RlZFR5cGUgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCk7CiAg
ICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Myw3ICs4NDMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIHRvIHRoZSAqbmV4dCog
aW5zdHJ1Y3Rpb24sIHNpbmNlIHdlJ3ZlIGFscmVhZHkgImV4ZWN1dGVkIiB0aGUKICAgICAgICAg
Ly8gU2V0TG9jYWwgYW5kIHdoYXRldmVyIG90aGVyIERGRyBOb2RlcyBhcmUgYXNzb2NpYXRlZCB3
aXRoIHRoZSBzYW1lCiAgICAgICAgIC8vIGJ5dGVjb2RlIGluZGV4IGFzIHRoZSBTZXRMb2NhbC4K
LSAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleEZvck9TUiA9PSBub2RlLmNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCgpKTsKKyAgICAgICAgQVNTRVJUKG1fYnl0ZWNvZGVJbmRleEZvck9TUiA9
PSBub2RlLmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgICAgIE5vZGUmIG5leHROb2Rl
ID0gYXQobV9jb21waWxlSW5kZXggKyAxKTsKICAgICAgICAgCiAgICAgICAgIC8vIE9kZGx5LCBp
dCdzIHBvc3NpYmxlIGZvciB0aGUgYnl0ZWNvZGUgaW5kZXggZm9yIHRoZSBuZXh0IG5vZGUgdG8g
YmUKQEAgLTg1Niw3ICs4NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIC8vIHN0YXRlbWVudCkgd291bGQgYmUgZGVhZCBhbnl3YXkgLSBzbyB0
aGUgZmFjdCB0aGF0IERGRyB3b3VsZCBoYXZlCiAgICAgICAgIC8vIGFscmVhZHkgbWFkZSB0aGUg
YXNzaWdubWVudCwgYW5kIGJha2VkIGl0IGludG8gdGhlIHJlZ2lzdGVyIGZpbGUgZHVyaW5nCiAg
ICAgICAgIC8vIE9TUiBleGl0LCB3b3VsZCBub3QgYmUgdmlzaWJsZSB0byB0aGUgb2xkIEpJVCBp
biBhbnkgd2F5LgotICAgICAgICBtX2J5dGVjb2RlSW5kZXhGb3JPU1IgPSBuZXh0Tm9kZS5jb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgoKTsKKyAgICAgICAgbV9ieXRlY29kZUluZGV4Rm9yT1NSID0g
bmV4dE5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwogICAgICAgICAKICAgICAgICAgUHJl
ZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdGlvbigpOwogICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCShyZXZpc2lvbiA5NzM0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShCYXNpY0Jsb2NrJgogCiAgICAgZm9yICg7IG1fY29t
cGlsZUluZGV4IDwgYmxvY2suZW5kOyArK21fY29tcGlsZUluZGV4KSB7CiAgICAgICAgIE5vZGUm
IG5vZGUgPSBhdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIG1fYnl0ZWNvZGVJbmRleEZvck9T
UiA9IG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCk7CisgICAgICAgIG1fYnl0ZWNvZGVJ
bmRleEZvck9TUiA9IG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwogICAgICAgICBpZiAo
IW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkgewogI2lmIEVOQUJMRShERkdfREVCVUdfVkVSQk9TRSkK
ICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiU3BlY3VsYXRpdmVKSVQgc2tpcHBpbmcgTm9k
ZSBAJWQgKGJjIyV1KSBhdCBKSVQgb2Zmc2V0IDB4JXggICAgICIsIChpbnQpbV9jb21waWxlSW5k
ZXgsIG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KCksIG1faml0LmRlYnVnT2Zmc2V0KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5jcHAJKHJldmlzaW9uIDk3MzQyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDQgKzUwLDc1IEBAIFJlZ2lz
dGVyRmlsZSogQ2FsbEZyYW1lOjpyZWdpc3RlckZpbGUoKQogCiAjZW5kaWYKIAorI2lmIEVOQUJM
RShERkdfSklUKQorYm9vbCBDYWxsRnJhbWU6OmlzSW5saW5lQ2FsbEZyYW1lKCkKK3sKKyAgICBp
ZiAoIWNhbGxlZSgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWUoKSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZUFzRnVuY3Rpb24gPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICByZXR1
cm4gY2FsbGVlQXNGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpICE9IGNvZGVCbG9jaygpLT5vd25lckV4
ZWN1dGFibGUoKTsKK30KKyAgICAgICAgCitDYWxsRnJhbWUqIENhbGxGcmFtZTo6dHJ1ZUNhbGxl
ckZyYW1lKCkKK3sKKyAgICAvLyB0aGlzIC0+IFRoZSBjYWxsZWU7IHRoaXMgaXMgZWl0aGVyIGFu
IGlubGluZWQgY2FsbGVlIGluIHdoaWNoIGNhc2UgaXQgYWxyZWFkeSBoYXMKKyAgICAvLyAgICBh
IHBvaW50ZXIgdG8gdGhlIHRydWUgY2FsbGVyLiBPdGhlcndpc2UgaXQgY29udGFpbnMgY3VycmVu
dCBQQyBpbiB0aGUgbWFjaGluZQorICAgIC8vICAgIGNhbGxlci4KKyAgICAvLworICAgIC8vIG1h
Y2hpbmVDYWxsZXIgLT4gVGhlIGNhbGxlciBhY2NvcmRpbmcgdG8gdGhlIG1hY2hpbmUsIHdoaWNo
IG1heSBiZSB6ZXJvIG9yCisgICAgLy8gICAgbW9yZSBmcmFtZXMgYWJvdmUgdGhlIHRydWUgY2Fs
bGVyIGR1ZSB0byBpbmxpbmluZy4KKyAgICAvLworICAgIC8vIHRydWVDYWxsZXIgLT4gVGhlIHJl
YWwgY2FsbGVyLgorICAgIAorICAgIC8vIEFtIEkgYW4gaW5saW5lIGNhbGwgZnJhbWU/IElmIHNv
LCB3ZSdyZSBkb25lLgorICAgIGlmIChpc0lubGluZUNhbGxGcmFtZSgpKQorICAgICAgICByZXR1
cm4gY2FsbGVyRnJhbWUoKTsKKyAgICAKKyAgICAvLyBJIGFtIGEgbWFjaGluZSBjYWxsIGZyYW1l
LCBzbyB0aGUgcXVlc3Rpb24gaXM6IGlzIG15IGNhbGxlciBhIG1hY2hpbmUgY2FsbCBmcmFtZQor
ICAgIC8vIHRoYXQgaGFzIGlubGluZXMgb3IgYSBtYWNoaW5lIGNhbGwgZnJhbWUgdGhhdCBkb2Vz
bid0PworICAgIENhbGxGcmFtZSogbWFjaGluZUNhbGxlciA9IGNhbGxlckZyYW1lKCktPnJlbW92
ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CisgICAgaWYgKCFtYWNoaW5lQ2FsbGVyKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBBU1NFUlQoIW1hY2hpbmVDYWxsZXItPmlzSW5saW5lQ2FsbEZyYW1lKCkp
OworICAgIGlmICghbWFjaGluZUNhbGxlci0+Y29kZUJsb2NrKCktPmhhc0NvZGVPcmlnaW5zKCkp
CisgICAgICAgIHJldHVybiBtYWNoaW5lQ2FsbGVyOyAvLyBObyBpbmxpbmluZywgc28gbWFjaGlu
ZUNhbGxlciA9PSB0cnVlQ2FsbGVyCisgICAgCisgICAgLy8gRmlndXJlIG91dCB3aGVyZSB0aGUg
Y2FsbGVyIGZyYW1lIHdvdWxkIGhhdmUgZ29uZSByZWxhdGl2ZSB0byB0aGUgbWFjaGluZQorICAg
IC8vIGNhbGxlciwgYW5kIHJlbWF0ZXJpYWxpemUgaXQuIERvIHNvIGZvciB0aGUgZW50aXJlIGlu
bGluZSBzdGFjay4KKyAgICAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBtYWNoaW5lQ2Fs
bGVyLT5jb2RlQmxvY2soKS0+Y29kZU9yaWdpbkZvclJldHVybihyZXR1cm5QQygpKTsKKyAgICAK
KyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTspIHsKKyAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBuZXh0SW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZy
YW1lLT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAKKyAgICAgICAgQ2FsbEZyYW1l
KiBpbmxpbmVkQ2FsbGVyID0gbWFjaGluZUNhbGxlciArIGlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQ7CisgICAgICAgIAorICAgICAgICBKU09iamVjdCogY2FsbGVlID0gbWFjaGluZUNhbGxl
ci0+cmVnaXN0ZXJzKClbaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVWUl0uZnVuY3Rpb24oKTsKKyAg
ICAgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
KTsKKyAgICAgICAgQVNTRVJUKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICAgICAgSlNGdW5j
dGlvbiogY2FsbGVlQXNGdW5jdGlvbiA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwp
OworICAgICAgICAKKyAgICAgICAgLy8gRmlsbCBpbiB0aGUgaW5saW5lZENhbGxlcgorICAgICAg
ICBpbmxpbmVkQ2FsbGVyLT5zZXRDb2RlQmxvY2sobWFjaGluZUNhbGxlci0+Y29kZUJsb2NrKCkp
OworICAgICAgICAKKyAgICAgICAgaW5saW5lZENhbGxlci0+c2V0U2NvcGVDaGFpbihjYWxsZWVB
c0Z1bmN0aW9uLT5zY29wZSgpKTsKKyAgICAgICAgaWYgKG5leHRJbmxpbmVDYWxsRnJhbWUpCisg
ICAgICAgICAgICBpbmxpbmVkQ2FsbGVyLT5zZXRDYWxsZXJGcmFtZShtYWNoaW5lQ2FsbGVyICsg
bmV4dElubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpbmxpbmVkQ2FsbGVyLT5zZXRDYWxsZXJGcmFtZShtYWNoaW5lQ2FsbGVyKTsKKyAgICAg
ICAgCisgICAgICAgIGlubGluZWRDYWxsZXItPnNldElubGluZUNhbGxGcmFtZShpbmxpbmVDYWxs
RnJhbWUpOworICAgICAgICBpbmxpbmVkQ2FsbGVyLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhpbmxpbmVDYWxsRnJhbWUtPm51bUFyZ3VtZW50c0luY2x1ZGluZ1RoaXMpOworICAgICAg
ICBpbmxpbmVkQ2FsbGVyLT5zZXRDYWxsZWUoY2FsbGVlKTsKKyAgICAgICAgCisgICAgICAgIGlu
bGluZUNhbGxGcmFtZSA9IG5leHRJbmxpbmVDYWxsRnJhbWU7CisgICAgfQorICAgIAorICAgIHJl
dHVybiBtYWNoaW5lQ2FsbGVyICsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0OworfQorI2VuZGlmCisKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDk3MzQyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNiAr
MTA0LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBSZXR1cm5BZGRyZXNzUHRyKHRo
aXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKyAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUoKSBjb25z
dCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLmlubGluZUNhbGxGcmFtZSgp
OyB9CisjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9u
KiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENd
LnZQQygpOyB9CiAjZW5kaWYKQEAgLTE1Myw2ICsxNTYsMjAgQEAgbmFtZXNwYWNlIEpTQyAgewog
ICAgICAgICB2b2lkIHNldENhbGxlZShKU09iamVjdCogY2FsbGVlKSB7IHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZWVdID0gUmVnaXN0ZXI6OndpdGhDYWxs
ZWUoY2FsbGVlKTsgfQogICAgICAgICB2b2lkIHNldENvZGVCbG9jayhDb2RlQmxvY2sqIGNvZGVC
bG9jaykgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q29kZUJs
b2NrXSA9IGNvZGVCbG9jazsgfQogICAgICAgICB2b2lkIHNldFJldHVyblBDKHZvaWQqIHZhbHVl
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10g
PSAoSW5zdHJ1Y3Rpb24qKXZhbHVlOyB9CisgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQor
ICAgICAgICBib29sIGlzSW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgIAorICAgICAgICB2b2lk
IHNldElubGluZUNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkgeyBz
dGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdID0gaW5s
aW5lQ2FsbEZyYW1lOyB9CisgICAgICAgIAorICAgICAgICAvLyBDYWxsIHRoaXMgdG8gZ2V0IHRo
ZSBzZW1hbnRpY2FsbHkgY29ycmVjdCBKUyBDYWxsRnJhbWUqLiBUaGlzIHJlc29sdmVzIGlzc3Vl
cworICAgICAgICAvLyBzdXJyb3VuZGluZyBpbmxpbmluZyBhbmQgdGhlIEhvc3RDYWxsRnJhbWVG
bGFnIHN0dWZmLgorICAgICAgICBDYWxsRnJhbWUqIHRydWVDYWxsZXJGcmFtZSgpOworI2Vsc2UK
KyAgICAgICAgYm9vbCBpc0lubGluZUNhbGxGcmFtZSgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIAorICAgICAgICBDYWxsRnJhbWUqIHRydWVDYWxsZXJGcmFtZSgpIHsgcmV0dXJuIGNhbGxl
ckZyYW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7IH0KKyNlbmRpZgogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IGludHB0cl90IEhvc3RDYWxsRnJhbWVGbGFnID0g
MTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gOTczNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTkwLDcgKzUxOTAs
NyBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAKIENhbGxGcmFt
ZSogSW50ZXJwcmV0ZXI6OmZpbmRGdW5jdGlvbkNhbGxGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgSlNGdW5jdGlvbiogZnVuY3Rpb24pCiB7Ci0gICAgZm9yIChDYWxsRnJhbWUqIGNhbmRpZGF0
ZSA9IGNhbGxGcmFtZTsgY2FuZGlkYXRlOyBjYW5kaWRhdGUgPSBjYW5kaWRhdGUtPmNhbGxlckZy
YW1lKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCkpIHsKKyAgICBmb3IgKENhbGxGcmFtZSog
Y2FuZGlkYXRlID0gY2FsbEZyYW1lOyBjYW5kaWRhdGU7IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS0+
dHJ1ZUNhbGxlckZyYW1lKCkpIHsKICAgICAgICAgaWYgKGNhbmRpZGF0ZS0+Y2FsbGVlKCkgPT0g
ZnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiA5
NzM0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKKyAg
ICBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKIAogICAg
IHR5cGVkZWYgRXhlY1N0YXRlIENhbGxGcmFtZTsKQEAgLTYwLDYgKzYxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFJlZ2lzdGVyJiBvcGVyYXRvcj0oQ29kZUJsb2NrKik7CiAgICAgICAg
IFJlZ2lzdGVyJiBvcGVyYXRvcj0oU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXIm
IG9wZXJhdG9yPShJbnN0cnVjdGlvbiopOworICAgICAgICBSZWdpc3RlciYgb3BlcmF0b3I9KElu
bGluZUNhbGxGcmFtZSopOwogCiAgICAgICAgIGludDMyX3QgaSgpIGNvbnN0OwogICAgICAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24oKSBjb25zdDsKQEAgLTY5LDYgKzcxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIHByb3BlcnR5TmFtZUl0
ZXJhdG9yKCkgY29uc3Q7CiAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKCkgY29u
c3Q7CiAgICAgICAgIEluc3RydWN0aW9uKiB2UEMoKSBjb25zdDsKKyAgICAgICAgSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgUmVnaXN0
ZXIgd2l0aEludChpbnQzMl90IGkpCiAgICAgICAgIHsKQEAgLTg0LDYgKzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZTsKICAgICAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrOwogICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIHZQQzsKKyAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICB9IHU7
CiAgICAgfTsKIApAQCAtMTM1LDYgKzEzOSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXImIFJlZ2lz
dGVyOjpvcGVyYXRvcj0oSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgewor
ICAgICAgICB1LmlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgaW50MzJfdCBSZWdpc3Rlcjo6
aSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4ganNWYWx1ZSgpLmFzSW50MzIoKTsKQEAg
LTE1NSw2ICsxNjUsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiB1LnZQQzsK
ICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIElubGluZUNhbGxGcmFtZSogUmVnaXN0ZXI6Omlu
bGluZUNhbGxGcmFtZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdS5pbmxpbmVDYWxs
RnJhbWU7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkocmV2aXNpb24g
OTczNDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBBcmd1bWVudHNfaAogI2RlZmlu
ZSBBcmd1bWVudHNfaAogCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgpAQCAtNTQsNiArNTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBv
dmVycm9kZUNhbGxlZSA6IDE7CiAgICAgICAgIGJvb2wgb3ZlcnJvZGVDYWxsZXIgOiAxOwogICAg
ICAgICBib29sIGlzU3RyaWN0TW9kZSA6IDE7CisgICAgICAgIGJvb2wgaXNJbmxpbmVGcmFtZSA6
IDE7IC8vIElmIHRydWUsIGFsbCBhcmd1bWVudHMgYXJlIGluIHRoZSBleHRyYUFyZ3VtZW50cyBi
dWZmZXIuCiAgICAgfTsKIAogCkBAIC0xNjksNiArMTcxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgaW50IG51bVBhcmFtZXRlcnMgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCktPnBh
cmFtZXRlckNvdW50KCk7CiAgICAgICAgIGFyZ2MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCk7CisgICAgICAgIAorICAgICAgICBpZiAoY2FsbEZyYW1lLT5pc0lubGlu
ZUNhbGxGcmFtZSgpKQorICAgICAgICAgICAgQVNTRVJUKGFyZ2MgPT0gbnVtUGFyYW1ldGVycyk7
CiAKICAgICAgICAgaWYgKGFyZ2MgPD0gbnVtUGFyYW1ldGVycykKICAgICAgICAgICAgIGFyZ3Yg
PSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJT
aXplIC0gbnVtUGFyYW1ldGVyczsKQEAgLTIwNSw2ICsyMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCktPnBhcmFt
ZXRlckNvdW50KCk7CiAgICAgICAgIGQtPmZpcnN0UGFyYW1ldGVySW5kZXggPSBmaXJzdFBhcmFt
ZXRlckluZGV4OwogICAgICAgICBkLT5udW1Bcmd1bWVudHMgPSBudW1Bcmd1bWVudHM7CisgICAg
ICAgIGQtPmlzSW5saW5lRnJhbWUgPSBmYWxzZTsKIAogICAgICAgICBkLT5yZWdpc3RlcnMgPSBy
ZWludGVycHJldF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkpOwogCkBAIC0yMzIsNiArMjM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBpbmxp
bmUgdm9pZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpOwog
ICAgICAgICBmaW5pc2hDcmVhdGlvbkJ1dERvbnRDb3B5UmVnaXN0ZXJzKGNhbGxGcmFtZSk7CiAg
ICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUpCiAgICAgICAgICAgICBjb3B5UmVnaXN0ZXJzKGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKQEAgLTIzOSwxMiArMjQ2LDU5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgaW5saW5lIHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbkFuZENvcHlS
ZWdpc3RlcnMoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgewotICAgICAgICBmaW5pc2hDcmVh
dGlvbkJ1dERvbnRDb3B5UmVnaXN0ZXJzKGNhbGxGcmFtZSk7Ci0gICAgICAgIGNvcHlSZWdpc3Rl
cnMoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CisgICAgICAgIAorICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWU7CisKKyAgICAgICAg
cHRyZGlmZl90IGZpcnN0UGFyYW1ldGVySW5kZXg7CisgICAgICAgIFJlZ2lzdGVyKiBhcmd2Owor
ICAgICAgICBpbnQgbnVtQXJndW1lbnRzOworICAgICAgICBnZXRBcmd1bWVudHNEYXRhKGNhbGxG
cmFtZSwgY2FsbGVlLCBmaXJzdFBhcmFtZXRlckluZGV4LCBhcmd2LCBudW1Bcmd1bWVudHMpOwor
ICAgICAgICAKKyAgICAgICAgZC0+bnVtUGFyYW1ldGVycyA9IGNhbGxlZS0+anNFeGVjdXRhYmxl
KCktPnBhcmFtZXRlckNvdW50KCk7CisgICAgICAgIGQtPmZpcnN0UGFyYW1ldGVySW5kZXggPSBm
aXJzdFBhcmFtZXRlckluZGV4OworICAgICAgICBkLT5udW1Bcmd1bWVudHMgPSBudW1Bcmd1bWVu
dHM7CisgICAgICAgIAorICAgICAgICBpZiAoZC0+bnVtUGFyYW1ldGVycykgeworICAgICAgICAg
ICAgaW50IHJlZ2lzdGVyT2Zmc2V0ID0gZC0+bnVtUGFyYW1ldGVycyArIFJlZ2lzdGVyRmlsZTo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAgICAgICAgIHNpemVfdCByZWdpc3RlckFycmF5U2l6
ZSA9IGQtPm51bVBhcmFtZXRlcnM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRy
KG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVnaXN0ZXJBcnJheVNpemU7ICsraSkKKyAgICAg
ICAgICAgICAgICByZWdpc3RlckFycmF5W2ldLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
dGhpcywgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtpIC0gcmVnaXN0ZXJPZmZzZXRdLmpzVmFsdWUo
KSk7CisgICAgICAgICAgICBkLT5yZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgZC0+
bnVtUGFyYW1ldGVycyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKKyAgICAg
ICAgICAgIGQtPnJlZ2lzdGVyQXJyYXkgPSByZWdpc3RlckFycmF5LnJlbGVhc2UoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBleHRyYUFyZ3Vt
ZW50czsKKyAgICAgICAgaWYgKGNhbGxGcmFtZS0+aXNJbmxpbmVDYWxsRnJhbWUoKSkKKyAgICAg
ICAgICAgIEFTU0VSVChkLT5udW1Bcmd1bWVudHMgPT0gZC0+bnVtUGFyYW1ldGVycyk7CisgICAg
ICAgIGlmIChkLT5udW1Bcmd1bWVudHMgPD0gZC0+bnVtUGFyYW1ldGVycykKKyAgICAgICAgICAg
IGV4dHJhQXJndW1lbnRzID0gMDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBudW1FeHRyYUFyZ3VtZW50cyA9IGQtPm51bUFyZ3VtZW50cyAtIGQtPm51bVBhcmFtZXRlcnM7
CisgICAgICAgICAgICBpZiAobnVtRXh0cmFBcmd1bWVudHMgPiBzaXplb2YoZC0+ZXh0cmFBcmd1
bWVudHNGaXhlZEJ1ZmZlcikgLyBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkKKyAgICAg
ICAgICAgICAgICBleHRyYUFyZ3VtZW50cyA9IG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bbnVt
RXh0cmFBcmd1bWVudHNdOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGV4dHJh
QXJndW1lbnRzID0gZC0+ZXh0cmFBcmd1bWVudHNGaXhlZEJ1ZmZlcjsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1FeHRyYUFyZ3VtZW50czsgKytpKQorICAgICAgICAg
ICAgICAgIGV4dHJhQXJndW1lbnRzW2ldLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhp
cywgYXJndltkLT5udW1QYXJhbWV0ZXJzICsgaV0uanNWYWx1ZSgpKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgZC0+ZXh0cmFBcmd1bWVudHMgPSBleHRyYUFyZ3VtZW50czsKKworICAg
ICAgICBkLT5jYWxsZWUuc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsZWUp
OworICAgICAgICBkLT5vdmVycm9kZUxlbmd0aCA9IGZhbHNlOworICAgICAgICBkLT5vdmVycm9k
ZUNhbGxlZSA9IGZhbHNlOworICAgICAgICBkLT5vdmVycm9kZUNhbGxlciA9IGZhbHNlOworICAg
ICAgICBkLT5pc0lubGluZUZyYW1lID0gY2FsbEZyYW1lLT5pc0lubGluZUNhbGxGcmFtZSgpOwor
ICAgICAgICBkLT5pc1N0cmljdE1vZGUgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKTsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCBBcmd1bWVudHM6OmZpbmlzaENyZWF0
aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBOb1BhcmFtZXRlcnNUeXBlKQogICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFjYWxsRnJhbWUtPmlzSW5saW5lQ2FsbEZyYW1lKCkpOwogICAgICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIEFTU0VS
VChpbmhlcml0cygmc19pbmZvKSk7CiAgICAgICAgIEFTU0VSVCghYXNGdW5jdGlvbihjYWxsRnJh
bWUtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpOwpAQCAtMjUz
LDYgKzMwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGQtPm51bVBhcmFtZXRlcnMg
PSAwOwogICAgICAgICBkLT5udW1Bcmd1bWVudHMgPSBudW1Bcmd1bWVudHM7CisgICAgICAgIGQt
PmlzSW5saW5lRnJhbWUgPSBmYWxzZTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4q
IGV4dHJhQXJndW1lbnRzOwogICAgICAgICBpZiAobnVtQXJndW1lbnRzID4gc2l6ZW9mKGQtPmV4
dHJhQXJndW1lbnRzRml4ZWRCdWZmZXIpIC8gc2l6ZW9mKFJlZ2lzdGVyKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDk3MzQyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NzMsNyArNTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogICAgICAgICBKU1N0cmluZyog
bmFtZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lVmFsdWUuZ2V0KCk7IH0KLSAgICAgICAg
c2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXpl
KCk7IH0KKyAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLT5zaXplKCk7IH0gLy8gSW5jbHVkaW5nICd0aGlzJyEKICAgICAgICAgdW5zaWdu
ZWQgY2FwdHVyZWRWYXJpYWJsZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9udW1DYXB0dXJlZFZh
cmlhYmxlczsgfQogICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3Q7CiAgICAgICAg
IFNoYXJlZFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3ltYm9s
VGFibGU7IH0K
</data>
<flag name="review"
          id="108575"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>