<?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>89512</bug_id>
          
          <creation_ts>2012-06-19 13:59:49 -0700</creation_ts>
          <short_desc>[Chromium] IndexedDB: Don&apos;t close database if pending connections are in flight</short_desc>
          <delta_ts>2012-06-20 10:20:59 -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>WebCore Misc.</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652777</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 13:59:49 -0700</bug_when>
    <thetext>If the IDB front IDBDatabaseBackendImpl, IDBRequest and IDBDatabase objects are communicating asynchronously (e.g. Chromium port), then there is a race condition:

A normal connection opens - note the two phase openConnection() / registerFrontendCallbacks()

* IDBRequest req1 = IDBFactory::open()
* which async invokes IDBDatabaseBackendImpl::openConnection()
* which async invokes IDBRequest::OnSuccess() on req1, which creates IDBDatabase connection1
* which async invokes IDBDatabaseBackendImpl::registerFrontendCallbacks(IDBDatabase), which &quot;registers&quot; connection1

Now a second connection opens, where

* IDBRequest req2 = IDBFactory::open()
* which async invokes IDBDatabaseBackendImpl::openConnection()
* which async invokes IDBRequest::OnSuccess() on req2, which creates IDBDatabase connection2
* which async invokes IDBDatabaseBackendImpl::registerFrontendCallbacks(IDBDatabase)...
* INTERRUPT: 
* connection1 async invokes IDBDatabase::close() which calls IDBDatabaseBackendImpl::close()
* at this point there are no registered callbacks, so it releases its backing store and drops itself from the factory
* RESUME: 
* IDBDatabaseBackendImpl::registerFrontendCallbacks(IDBDatabase) &quot;registers&quot; connection2

* connection2.setVersion() is called, but the backing store ref has been released. *boom*

So the bug is that IDBDatabaseBackendImpl::close should not close itself if there are pending connections in the limbo state between openConnection() and registerFrontendCallbacks(). The correct long term fix is probably to eliminate this limbo state entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652848</commentid>
    <comment_count>1</comment_count>
      <attachid>148432</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 14:53:12 -0700</bug_when>
    <thetext>Created attachment 148432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652850</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 14:54:45 -0700</bug_when>
    <thetext>+vsevik@ for the inspector changes. This patch requires that the second phase of database connections is processed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652851</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 14:55:16 -0700</bug_when>
    <thetext>tony@ can you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652879</commentid>
    <comment_count>4</comment_count>
      <attachid>148432</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-19 15:23:13 -0700</bug_when>
    <thetext>Comment on attachment 148432
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652886</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 15:32:17 -0700</bug_when>
    <thetext>dgrogan@, can you take a look too since we were discussing this and how it would relate to your upcoming patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653004</commentid>
    <comment_count>6</comment_count>
      <attachid>148432</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-19 17:03:24 -0700</bug_when>
    <thetext>Comment on attachment 148432
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148432&amp;action=review

LGTM

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:347
&gt; +    RefPtr&lt;IDBDatabaseBackendImpl&gt; self = this;

What scenario does this prevent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653005</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-06-19 17:05:16 -0700</bug_when>
    <thetext>I didn&apos;t look at the inspector part at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653056</commentid>
    <comment_count>8</comment_count>
      <attachid>148432</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 17:53:32 -0700</bug_when>
    <thetext>Comment on attachment 148432
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=148432&amp;action=review

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:347
&gt;&gt; +    RefPtr&lt;IDBDatabaseBackendImpl&gt; self = this;
&gt; 
&gt; What scenario does this prevent?

Whoops, good catch. That&apos;s just residue from early debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653057</commentid>
    <comment_count>9</comment_count>
      <attachid>148474</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-06-19 17:54:09 -0700</bug_when>
    <thetext>Created attachment 148474
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653540</commentid>
    <comment_count>10</comment_count>
      <attachid>148474</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 09:18:09 -0700</bug_when>
    <thetext>Comment on attachment 148474
Patch for landing

Clearing flags on attachment: 148474

Committed r120828: &lt;http://trac.webkit.org/changeset/120828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653541</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 09:18:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148432</attachid>
            <date>2012-06-19 14:53:12 -0700</date>
            <delta_ts>2012-06-19 17:54:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89512-20120619145311.patch</filename>
            <type>text/plain</type>
            <size>19545</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZlMWFkNmE4MmVkZmZk
NGJjNjQzZjQyYTgyMzhkOTkxNzBlOTEyMS4uODI0OWUwZTExMWM0MzNkOTM5ZjIyMGRlY2YzNDE3
NWI2MDg5ODMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IERvbid0IGNsb3NlIGRhdGFiYXNlIGlmIHBlbmRpbmcgY29ubmVjdGlvbnMgYXJlIGlu
IGZsaWdodAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk1MTIKKworICAgICAgICBBZGQgYSBjb3VudGVyIHRyYWNraW5nIGNvbm5lY3Rpb25zIGJldHdl
ZW4gdGhlIHR3byBwaGFzZXMsIHdoaWNoIGlzIHVzZWQgYWxvbmcgd2l0aAorICAgICAgICB0aGUg
Y29tcGxldGVkIGNvbm5lY3Rpb24gY291bnQgdG8gZGV0ZXJtaW5lIHRoZSB0b3RhbCBudW1iZXIg
b2YgY29ubmVjdGlvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogd2Via2l0X3VuaXRfdGVzdHMgLS1ndGVzdF9maWx0ZXI9J0lEQkRhdGFi
YXNlQmFja2VuZFRlc3QuQ29ubmVjdGlvbkxpZmVjeWNsZScKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNvbm5lY3Rpb25Db3VudCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6
OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6dHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAgICAgICAoSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbklu
dGVybmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMDYtMTkgIE1pa2UgV2VzdCAgPG1rd3N0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDb21waWxhdGlvbiBmYWlsdXJlIGluIFN0eWxlUmVzb2x2
ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU1MTJiNGU1M2I2YWFjNzE3ZjFi
MTI5NmFiZmU2MDZjZGM2NDNiNDUuLjY5YTYxYWQyY2QyYTZjZDJhMWY5ZDUzY2ZkMGI5MDMyMmE2
ZmU5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTIt
MDYtMTkgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIEluZGV4ZWREQjogRG9uJ3QgY2xvc2UgZGF0YWJhc2UgaWYgcGVuZGluZyBjb25uZWN0
aW9ucyBhcmUgaW4gZmxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04OTUxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHA6CisgICAgICAgIChN
b2NrSURCQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tJREJDYWxsYmFja3M6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpNb2NrSURCQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRmFrZUlEQkRhdGFiYXNlQ2FsbGJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZha2VJREJEYXRhYmFzZUNhbGxiYWNrczo6RmFrZUlEQkRh
dGFiYXNlQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTA2LTE5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTIwNTg2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRl
eCAxMmYyOTAyNWFiM2E4OTU2MmM1ZTExOTRmMzk4MDA3ZGNkNjc2MGZhLi43YTI3MjYzYWU0NDJk
ZWExODM1M2QyZjQzMmJjNTU5YWM5ZWVlNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAt
MTA5LDYgKzEwOSw3IEBAIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OklEQkRhdGFiYXNlQmFja2Vu
ZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvCiAgICAgLCBtX2lkZW50aWZp
ZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKGNvb3JkaW5hdG9yKQorICAgICwgbV9wZW5kaW5nQ29ubmVj
dGlvbkNvdW50KDApCiB7CiAgICAgQVNTRVJUKCFtX25hbWUuaXNOdWxsKCkpOwogfQpAQCAtMjIy
LDcgKzIyMyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbihjb25z
dCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgLy8gRklYTUU6IE9ubHkg
ZmlyZSBvbkJsb2NrZWQgaWYgdGhlcmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCiAg
ICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50cyBhcmUgcmVjZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0
byBmaXJlLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTEzMAotICAgIGlmIChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSA+IDEpIHsKKyAgICBp
ZiAoY29ubmVjdGlvbkNvdW50KCkgPiAxKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2Vk
KCk7CiAgICAgICAgIFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+IHBlbmRpbmdTZXRWZXJz
aW9uQ2FsbCA9IFBlbmRpbmdTZXRWZXJzaW9uQ2FsbDo6Y3JlYXRlKHZlcnNpb24sIGNhbGxiYWNr
cywgZGF0YWJhc2VDYWxsYmFja3MpOwogICAgICAgICBtX3BlbmRpbmdTZXRWZXJzaW9uQ2FsbHMu
YXBwZW5kKHBlbmRpbmdTZXRWZXJzaW9uQ2FsbCk7CkBAIC0yNzgsOSArMjc5LDE0IEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6dHJhbnNhY3Rpb25GaW5pc2hlZChQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uQmFja2VuCiAgICAgfQogfQogCitpbnQzMl90IElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw6OmNvbm5lY3Rpb25Db3VudCgpCit7CisgICAgcmV0dXJuIG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuc2l6ZSgpICsgbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OworfQorCiB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5kaW5nQ2FsbHMoKQogewotICAgIEFTU0VSVCht
X2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUoKSA8PSAxKTsKKyAgICBBU1NFUlQoY29ubmVjdGlv
bkNvdW50KCkgPD0gMSk7CiAKICAgICAvLyBQZW5kaW5nIGNhbGxzIG1heSBiZSByZXF1ZXVlZCBv
ciBhYm9ydGVkCiAgICAgRGVxdWU8UmVmUHRyPFBlbmRpbmdTZXRWZXJzaW9uQ2FsbD4gPiBwZW5k
aW5nU2V0VmVyc2lvbkNhbGxzOwpAQCAtMzM4LDYgKzM0NCw3IEBAIFBhc3NSZWZQdHI8SURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2Fj
dGlvbihECiAgICAgICAgIH0KICAgICB9CiAKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gc2VsZiA9IHRoaXM7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4gdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjcmVhdGUob2Jq
ZWN0U3RvcmVOYW1lcywgbW9kZSwgdGhpcyk7CiAgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5z
YWN0aW9uLmdldCgpKTsKICAgICByZXR1cm4gdHJhbnNhY3Rpb24ucmVsZWFzZSgpOwpAQCAtMzQ1
LDE4ICszNTIsMjQgQEAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uKEQKIAogdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcykKIHsKKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUu
Z2V0KCkpOworICAgIEFTU0VSVChtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQpOworICAgIC0tbV9w
ZW5kaW5nQ29ubmVjdGlvbkNvdW50OwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKFJl
ZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4oY2FsbGJhY2tzKSk7CiB9CiAKIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcykKIHsKKyAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUuZ2V0KCkpOwogICAgIGlm
ICghbV9wZW5kaW5nRGVsZXRlQ2FsbHMuaXNFbXB0eSgpIHx8IG1fcnVubmluZ1ZlcnNpb25DaGFu
Z2VUcmFuc2FjdGlvbiB8fCAhbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmlzRW1wdHkoKSkKICAg
ICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZShj
YWxsYmFja3MpKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKG1faWQgPT0gSW52YWxpZElkICYm
ICFvcGVuSW50ZXJuYWwoKSkKICAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiSW50
ZXJuYWwgZXJyb3IuIikpOwotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgKyttX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9u
U3VjY2Vzcyh0aGlzKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApAQCAtMzk1LDEyICs0MDgsMTIg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNrczsKICAgICBBU1NFUlQobV9kYXRhYmFzZUNhbGxi
YWNrc1NldC5jb250YWlucyhjYWxsYmFja3MpKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0
LnJlbW92ZShjYWxsYmFja3MpOwotICAgIGlmIChtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNpemUo
KSA+IDEpCisgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpID4gMSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogCi0gICAgaWYgKCFtX2RhdGFiYXNlQ2FsbGJh
Y2tzU2V0LnNpemUoKSkgeworICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAg
VHJhbnNhY3Rpb25TZXQgdHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKICAgICAgICAgZm9y
IChUcmFuc2FjdGlvblNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB0cmFuc2FjdGlvbnMuYmVnaW4o
KTsgaXQgIT0gdHJhbnNhY3Rpb25zLmVuZCgpOyArK2l0KQogICAgICAgICAgICAgKCppdCktPmFi
b3J0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKaW5kZXggY2ZiY2EzYjYzNTMwNjZhNzc1YzRjMTc4MmZm
MTA0MTk2OWRkOWJhMi4uMTU1NzFhOGM0ODAzMzEyMzc2MjBkNmFhZjQ3NjJkNTQ3MGU4MzdlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VC
YWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQmFja2VuZEltcGwuaApAQCAtNzgsNiArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBvcGVuSW50ZXJuYWwoKTsKICAgICB2b2lkIGxvYWRPYmplY3RTdG9yZXMoKTsKKyAgICBpbnQz
Ml90IGNvbm5lY3Rpb25Db3VudCgpOwogICAgIHZvaWQgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwog
CiAgICAgc3RhdGljIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0
cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsPiwgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2U+KTsKQEAgLTExNiw2ICsxMTcsMTAgQEAgcHJpdmF0ZToKICAgICBjbGFz
cyBQZW5kaW5nRGVsZXRlQ2FsbDsKICAgICBEZXF1ZTxSZWZQdHI8UGVuZGluZ0RlbGV0ZUNhbGw+
ID4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAKKyAgICAvLyBGSVhNRTogRWxpbWluYXRlIHRoZSBs
aW1ibyBzdGF0ZSBiZXR3ZWVuIG9wZW5Db25uZWN0aW9uKCkgYW5kIHJlZ2lzdGVyRnJvbnRlbmRD
YWxsYmFja3MoKQorICAgIC8vIHRoYXQgdGhpcyBjb3VudGVyIHRyYWNrcy4KKyAgICBpbnQzMl90
IG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKKwogICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiA+IERhdGFiYXNlQ2FsbGJhY2tzU2V0OwogICAgIERh
dGFiYXNlQ2FsbGJhY2tzU2V0IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5jcHAKaW5kZXggNjA4YjdjM2ZhNTkxZDU4MzMyZGE0N2ZlMTk2ZmUwMThmOTRmYjFiZC4u
NDQ3YmE3NzUxMDM1YzhlOTdlNDcwMTdjZDdkNzZhMGM3MjE1MmFlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZElt
cGwuY3BwCkBAIC0xODIsOCArMTgyLDggQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9w
ZW5JbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIElEQkNhbGxiYWNrcyogY2FsbGIKIAogICAg
IFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwogICAgIGlm
IChkYXRhYmFzZUJhY2tlbmQpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4oZGF0YWJhc2VCYWNrZW5kLmdldCgpKS5yZWxl
YXNlKCkpOwogICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmll
ciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKKyAgICAgICAgZGF0YWJhc2VCYWNrZW5kLT5vcGVu
Q29ubmVjdGlvbihjYWxsYmFja3MpOwogICAgIH0gZWxzZQogICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDgzZjBmMmQ3YmQ1
ZWQzOTIzY2E1Y2JkZjY5YWJhNDQ5ZjQ2OTRkOGMuLjhjNGJmZjVmZDhhMmE5MmIxZDQzZGM5N2E0
ZTVjNTdkM2E2NDc3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50LmNwcApAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIklE
QkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgi
CiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJJ
bmRleEJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJLZXkuaCIKQEAgLTExNSw2ICsx
MTYsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSB7IH0KIH07CiAK
K2NsYXNzIEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIElEQkRhdGFiYXNl
Q2FsbGJhY2tzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JJREJE
YXRhYmFzZUNhbGxiYWNrcz4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgSW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3MoKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB+SW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSB7IH0KK3ByaXZhdGU6
CisgICAgSW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KK307CisKKwogY2xhc3Mg
SW5zcGVjdG9ySURCVHJhbnNhY3Rpb25DYWxsYmFjayA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkNh
bGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9ySURCVHJh
bnNhY3Rpb25DYWxsYmFjaz4gY3JlYXRlKCkKQEAgLTE3Miw2ICsxODgsMjggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPikgPSAwOwogfTsKIAorY2xhc3MgRGF0YWJhc2VDb25uZWN0aW9uIHsKK3B1YmxpYzoK
KyAgICBEYXRhYmFzZUNvbm5lY3Rpb24oKQorICAgICAgICA6IG1faWRiRGF0YWJhc2VDYWxsYmFj
a3MoSW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpKSB7IH0KKworICAgIHZv
aWQgY29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0
YWJhc2UpCisgICAgeworICAgICAgICBtX2lkYkRhdGFiYXNlID0gaWRiRGF0YWJhc2U7CisgICAg
ICAgIG1faWRiRGF0YWJhc2UtPnJlZ2lzdGVyRnJvbnRlbmRDYWxsYmFja3MobV9pZGJEYXRhYmFz
ZUNhbGxiYWNrcyk7CisgICAgfQorCisgICAgfkRhdGFiYXNlQ29ubmVjdGlvbigpCisgICAgewor
ICAgICAgICBpZiAobV9pZGJEYXRhYmFzZSkKKyAgICAgICAgICAgIG1faWRiRGF0YWJhc2UtPmNs
b3NlKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBtX2lkYkRhdGFiYXNlOworICAgIFJlZlB0
cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9pZGJEYXRhYmFzZUNhbGxiYWNrczsKK307CisKIGNs
YXNzIE9wZW5EYXRhYmFzZUNhbGxiYWNrIDogcHVibGljIEluc3BlY3RvcklEQkNhbGxiYWNrIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuRGF0YWJhc2VDYWxsYmFjaz4gY3Jl
YXRlKEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1dGFibGVXaXRoRGF0YWJhc2UpCkBAIC0x
ODEsOCArMjE5LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJh
Y2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQorICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNl
KQogICAgIHsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRi
RGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNl
LT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKICAgICB9CiAKQEAgLTI2Myw4ICszMDIsMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+RGF0YWJhc2VMb2FkZXJDYWxsYmFjaygpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IGlkYkRhdGFiYXNlKQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CisgICAgICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJh
c2U7CisgICAgICAgIG1fY29ubmVjdGlvbi5jb25uZWN0KGlkYkRhdGFiYXNlKTsKICAgICAgICAg
aWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTMxNSw2ICszNTYsNyBAQCBwcml2YXRlOgogICAgICAgICAsIG1fcmVxdWVzdElkKHJl
cXVlc3RJZCkgeyB9CiAgICAgUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVu
ZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAgaW50IG1fcmVxdWVzdElkOworICAg
IERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9OwogCiBzdGF0aWMgUGFzc1JlZlB0
cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkp
CkBAIC00MzAsNiArNDcyLDggQEAgc3RhdGljIFBhc3NSZWZQdHI8S2V5PiBrZXlGcm9tSURCS2V5
KElEQktleSogaWRiS2V5KQogICAgIHJldHVybiBrZXkucmVsZWFzZSgpOwogfQogCitjbGFzcyBE
YXRhTG9hZGVyQ2FsbGJhY2s7CisKIGNsYXNzIE9wZW5DdXJzb3JDYWxsYmFjayA6IHB1YmxpYyBJ
bnNwZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgZW51bSBDdXJzb3JUeXBlIHsKQEAg
LTQzNyw5ICs0ODEsOSBAQCBwdWJsaWM6CiAgICAgICAgIEluZGV4RGF0YUN1cnNvcgogICAgIH07
CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IGNyZWF0ZShQYXNz
UmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBmcm9udGVu
ZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCwgUGFzc1JlZlB0cjxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uLCBDdXJzb3JUeXBlIGN1
cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXpl
KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gY3JlYXRlKFBhc3NS
ZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPERhdGFM
b2FkZXJDYWxsYmFjaz4gZGF0YUxvYWRlckNhbGxiYWNrLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZT4gaWRiVHJhbnNhY3Rpb24sIEN1cnNvclR5cGUgY3Vyc29yVHlw
ZSwgaW50IHJlcXVlc3RJZCwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCiAgICAg
ewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wZW5DdXJzb3JDYWxsYmFjayhmcm9udGVu
ZFByb3ZpZGVyLCBpbmplY3RlZFNjcmlwdCwgaWRiVHJhbnNhY3Rpb24sIGN1cnNvclR5cGUsIHJl
cXVlc3RJZCwgc2tpcENvdW50LCBwYWdlU2l6ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE9wZW5DdXJzb3JDYWxsYmFjayhmcm9udGVuZFByb3ZpZGVyLCBpbmplY3RlZFNjcmlwdCwg
ZGF0YUxvYWRlckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbiwgY3Vyc29yVHlwZSwgcmVxdWVzdElk
LCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+T3BlbkN1cnNv
ckNhbGxiYWNrKCkgeyB9CkBAIC00OTEsNiArNTM1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBl
bmQoYm9vbCBoYXNNb3JlKQogICAgIHsKKyAgICAgICAgbV9kYXRhTG9hZGVyQ2FsbGJhY2suY2xl
YXIoKTsKICAgICAgICAgaWYgKCFtX2Zyb250ZW5kUHJvdmlkZXItPmZyb250ZW5kKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKQEAgLTUwOSw5ICs1NTQsMTAgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBPcGVuQ3Vyc29yQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVz
dElkLCBpbnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICBPcGVuQ3Vyc29yQ2Fs
bGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRl
cj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NS
ZWZQdHI8RGF0YUxvYWRlckNhbGxiYWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2ssIFBhc3NSZWZQdHI8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgQ3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tpcENvdW50LCB1bnNpZ25lZCBwYWdl
U2l6ZSkKICAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKICAg
ICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQorICAgICAgICAsIG1fZGF0
YUxvYWRlckNhbGxiYWNrKGRhdGFMb2FkZXJDYWxsYmFjaykKICAgICAgICAgLCBtX2lkYlRyYW5z
YWN0aW9uKGlkYlRyYW5zYWN0aW9uKQogICAgICAgICAsIG1fY3Vyc29yVHlwZShjdXJzb3JUeXBl
KQogICAgICAgICAsIG1fcmVxdWVzdElkKHJlcXVlc3RJZCkKQEAgLTUyMyw2ICs1NjksNyBAQCBw
cml2YXRlOgogICAgIH0KICAgICBSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250
ZW5kUHJvdmlkZXI+IG1fZnJvbnRlbmRQcm92aWRlcjsKICAgICBJbmplY3RlZFNjcmlwdCBtX2lu
amVjdGVkU2NyaXB0OworICAgIFJlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IG1fZGF0YUxvYWRl
ckNhbGxiYWNrOwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1f
aWRiVHJhbnNhY3Rpb247CiAgICAgQ3Vyc29yVHlwZSBtX2N1cnNvclR5cGU7CiAgICAgaW50IG1f
cmVxdWVzdElkOwpAQCAtNTQxLDggKzU4OCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5E
YXRhTG9hZGVyQ2FsbGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKKyAgICB2aXJ0
dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4g
cHJwRGF0YWJhc2UpCiAgICAgeworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBtX2Nvbm5lY3Rpb24u
Y29ubmVjdChpZGJEYXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5m
cm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01NTgsMTIgKzYwNywxMiBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBpZiAoIWlkYkluZGV4KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNh
bGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCBt
X2luamVjdGVkU2NyaXB0LCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1cnNvckNhbGxiYWNr
OjpJbmRleERhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3NraXBDb3VudCwgbV9wYWdlU2l6ZSk7
CisgICAgICAgICAgICBSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNrPiBvcGVuQ3Vyc29yQ2FsbGJh
Y2sgPSBPcGVuQ3Vyc29yQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250ZW5kUHJvdmlkZXIsIG1faW5q
ZWN0ZWRTY3JpcHQsIHRoaXMsIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBPcGVuQ3Vyc29yQ2FsbGJh
Y2s6OkluZGV4RGF0YUN1cnNvciwgbV9yZXF1ZXN0SWQsIG1fc2tpcENvdW50LCBtX3BhZ2VTaXpl
KTsKIAogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgICAgICBpZGJJ
bmRleC0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLCBJREJDdXJzb3I6Ok5FWFQsIG9wZW5DdXJz
b3JDYWxsYmFjaywgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJhY2s+IG9wZW5DdXJzb3JDYWxsYmFj
ayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgbV9pbmpl
Y3RlZFNjcmlwdCwgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIE9wZW5DdXJzb3JDYWxsYmFjazo6T2Jq
ZWN0U3RvcmVEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJZCwgbV9za2lwQ291bnQsIG1fcGFnZVNpemUp
OworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNhbGxi
YWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCBtX2lu
amVjdGVkU2NyaXB0LCB0aGlzLCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwgT3BlbkN1cnNvckNhbGxi
YWNrOjpPYmplY3RTdG9yZURhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3NraXBDb3VudCwgbV9w
YWdlU2l6ZSk7CiAKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICAg
ICAgaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vyc29yOjpO
RVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7CkBAIC01
ODgsNiArNjM3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IG1faWRiS2V5
UmFuZ2U7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNpemU7Cisg
ICAgRGF0YWJhc2VDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFj
a2VuZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRhYmFzZUJh
Y2tlbmRUZXN0LmNwcAppbmRleCAwOThhNzMyN2YyYzdlNGQ5NmI0YjZkMDM0ZGJlNjMwNjZiYzU1
ZDdjLi42MjlmZTkzMzgwYWMxZWIzODMyNmZmYTE4NDhhOWI1NzE3MTk1ZmEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVz
dC5jcHAKQEAgLTY3LDYgKzY3LDcwIEBAIFRFU1QoSURCRGF0YWJhc2VCYWNrZW5kVGVzdCwgQmFj
a2luZ1N0b3JlUmV0ZW50aW9uKQogICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFzT25l
UmVmKCkpOwogfQogCitjbGFzcyBNb2NrSURCQ2FsbGJhY2tzIDogcHVibGljIElEQkNhbGxiYWNr
cyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gY3Jl
YXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tJREJDYWxsYmFja3MoKSk7IH0KKyAgICB2
aXJ0dWFsIH5Nb2NrSURCQ2FsbGJhY2tzKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIEVYUEVD
VF9UUlVFKG1fd2FzU3VjY2Vzc0RCQ2FsbGVkKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIG9u
RXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+KSBPVkVSUklERSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2Vu
ZEludGVyZmFjZT4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgbV93YXNTdWNjZXNzREJDYWxsZWQgPSB0cnVlOworICAgIH0KKyAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVh
bCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZT4pIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aENvbnRpbnVhdGlvbigpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3NXaXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25z
dCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tl
ZCgpIE9WRVJSSURFIHsgfQorcHJpdmF0ZToKKyAgICBNb2NrSURCQ2FsbGJhY2tzKCkKKyAgICAg
ICAgOiBtX3dhc1N1Y2Nlc3NEQkNhbGxlZChmYWxzZSkgeyB9CisgICAgYm9vbCBtX3dhc1N1Y2Nl
c3NEQkNhbGxlZDsKK307CisKK2NsYXNzIEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1Ymxp
YyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcg
RmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+RmFrZUlEQkRhdGFi
YXNlQ2FsbGJhY2tzKCkgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNo
YW5nZShjb25zdCBTdHJpbmcmIHZlcnNpb24pIE9WRVJSSURFIHsgfQorcHJpdmF0ZToKKyAgICBG
YWtlSURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KK307CisKK1RFU1QoSURCRGF0YWJhc2VCYWNr
ZW5kVGVzdCwgQ29ubmVjdGlvbkxpZmVjeWNsZSkKK3sKKyAgICBSZWZQdHI8SURCRmFrZUJhY2tp
bmdTdG9yZT4gYmFja2luZ1N0b3JlID0gYWRvcHRSZWYobmV3IElEQkZha2VCYWNraW5nU3RvcmUo
KSk7CisgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVSZWYoKSk7CisKKyAgICBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiBjb29yZGluYXRvciA9IDA7CisgICAgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKiBmYWN0b3J5ID0gMDsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gZGIgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUoImRiIiwgYmFja2luZ1N0
b3JlLmdldCgpLCBjb29yZGluYXRvciwgZmFjdG9yeSwgInVuaXF1ZWlkIik7CisgICAgRVhQRUNU
X0dUKGJhY2tpbmdTdG9yZS0+cmVmQ291bnQoKSwgMSk7CisKKyAgICBSZWZQdHI8TW9ja0lEQkNh
bGxiYWNrcz4gcmVxdWVzdDEgPSBNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBkYi0+
b3BlbkNvbm5lY3Rpb24ocmVxdWVzdDEpOworCisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNh
bGxiYWNrcz4gY29ubmVjdGlvbjEgPSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgp
OworICAgIGRiLT5yZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24xKTsKKworICAg
IFJlZlB0cjxNb2NrSURCQ2FsbGJhY2tzPiByZXF1ZXN0MiA9IE1vY2tJREJDYWxsYmFja3M6OmNy
ZWF0ZSgpOworICAgIGRiLT5vcGVuQ29ubmVjdGlvbihyZXF1ZXN0Mik7CisKKyAgICBkYi0+Y2xv
c2UoY29ubmVjdGlvbjEpOworICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCks
IDEpOworCisgICAgUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY29ubmVjdGlvbjIg
PSBGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSgpOworICAgIGRiLT5yZWdpc3RlckZy
b250ZW5kQ2FsbGJhY2tzKGNvbm5lY3Rpb24yKTsKKworICAgIGRiLT5jbG9zZShjb25uZWN0aW9u
Mik7CisgICAgRVhQRUNUX1RSVUUoYmFja2luZ1N0b3JlLT5oYXNPbmVSZWYoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148474</attachid>
            <date>2012-06-19 17:54:09 -0700</date>
            <delta_ts>2012-06-20 09:18:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-89512-20120619175409.patch</filename>
            <type>text/plain</type>
            <size>19165</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZlMWFkNmE4MmVkZmZk
NGJjNjQzZjQyYTgyMzhkOTkxNzBlOTEyMS4uMzRmYzJlNGNlYzk3ZjgzNzk3NjM5MzI1MDNlZDYw
MTBjMTU2YzM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE5ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IERvbid0IGNsb3NlIGRhdGFiYXNlIGlmIHBlbmRpbmcgY29ubmVjdGlvbnMgYXJlIGlu
IGZsaWdodAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk1MTIKKworICAgICAgICBBZGQgYSBjb3VudGVyIHRyYWNraW5nIGNvbm5lY3Rpb25zIGJldHdl
ZW4gdGhlIHR3byBwaGFzZXMsIHdoaWNoIGlzIHVzZWQgYWxvbmcgd2l0aAorICAgICAgICB0aGUg
Y29tcGxldGVkIGNvbm5lY3Rpb24gY291bnQgdG8gZGV0ZXJtaW5lIHRoZSB0b3RhbCBudW1iZXIg
b2YgY29ubmVjdGlvbnMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAg
ICAgICBUZXN0OiB3ZWJraXRfdW5pdF90ZXN0cyAtLWd0ZXN0X2ZpbHRlcj0nSURCRGF0YWJhc2VC
YWNrZW5kVGVzdC5Db25uZWN0aW9uTGlmZWN5Y2xlJworCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y29ubmVjdGlvbkNvdW50KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJv
Y2Vzc1BlbmRpbmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjp0cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpyZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRh
dGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmg6CisgICAgICAgIChJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJu
YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNi0xOSAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGZhaWx1cmUgaW4gU3R5bGVSZXNvbHZlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTUxMmI0ZTUzYjZhYWM3MTdmMWIxMjk2
YWJmZTYwNmNkYzY0M2I0NS4uOTdiZDA4YzBiMWUyMTc0OTBkYWRhZjA3ZjdmNzU0OTA0MTc0MTQy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wNi0x
OSAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1
bV0gSW5kZXhlZERCOiBEb24ndCBjbG9zZSBkYXRhYmFzZSBpZiBwZW5kaW5nIGNvbm5lY3Rpb25z
IGFyZSBpbiBmbGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5NTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAg
ICAqIHRlc3RzL0lEQkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwOgorICAgICAgICAoTW9ja0lEQkNh
bGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja0lEQkNhbGxiYWNrczo6TW9ja0lEQkNhbGxiYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M6OkZha2VJREJEYXRhYmFzZUNh
bGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wNi0xOSAgU2hlcmlm
ZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjEyMDU4Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggMTJmMjkw
MjVhYjNhODk1NjJjNWUxMTk0ZjM5ODAwN2RjZDY3NjBmYS4uNzhlMGVlMDhhMjdkZjg3OTFlYjI3
Y2U4ZjYwOTUzMTdhZGU1ZjViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEwOSw2ICsx
MDksNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0bwogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1
ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rp
b25Db29yZGluYXRvcihjb29yZGluYXRvcikKKyAgICAsIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3Vu
dCgwKQogewogICAgIEFTU0VSVCghbV9uYW1lLmlzTnVsbCgpKTsKIH0KQEAgLTIyMiw3ICsyMjMs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb24oY29uc3QgU3RyaW5n
JiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIEZJWE1FOiBPbmx5IGZpcmUgb25C
bG9ja2VkIGlmIHRoZXJlIGFyZSBvcGVuIGNvbm5lY3Rpb25zIGFmdGVyIHRoZQogICAgIC8vIFZl
cnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBub3QganVzdCBzZXQgdXAgdG8gZmlyZS4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAg
ICBpZiAobV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCkgPiAxKSB7CisgICAgaWYgKGNvbm5l
Y3Rpb25Db3VudCgpID4gMSkgewogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZCgpOwogICAg
ICAgICBSZWZQdHI8UGVuZGluZ1NldFZlcnNpb25DYWxsPiBwZW5kaW5nU2V0VmVyc2lvbkNhbGwg
PSBQZW5kaW5nU2V0VmVyc2lvbkNhbGw6OmNyZWF0ZSh2ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFi
YXNlQ2FsbGJhY2tzKTsKICAgICAgICAgbV9wZW5kaW5nU2V0VmVyc2lvbkNhbGxzLmFwcGVuZChw
ZW5kaW5nU2V0VmVyc2lvbkNhbGwpOwpAQCAtMjc4LDkgKzI3OSwxNCBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZEltcGw6OnRyYW5zYWN0aW9uRmluaXNoZWQoUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbgogICAgIH0KIH0KIAoraW50MzJfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpj
b25uZWN0aW9uQ291bnQoKQoreworICAgIHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LnNp
emUoKSArIG1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKK30KKwogdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5zaXplKCkgPD0gMSk7CisgICAgQVNTRVJUKGNvbm5lY3Rpb25Db3VudCgp
IDw9IDEpOwogCiAgICAgLy8gUGVuZGluZyBjYWxscyBtYXkgYmUgcmVxdWV1ZWQgb3IgYWJvcnRl
ZAogICAgIERlcXVlPFJlZlB0cjxQZW5kaW5nU2V0VmVyc2lvbkNhbGw+ID4gcGVuZGluZ1NldFZl
cnNpb25DYWxsczsKQEAgLTM0NSwxOCArMzUxLDI0IEBAIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rp
b25CYWNrZW5kSW50ZXJmYWNlPiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp0cmFuc2FjdGlvbihE
CiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNr
cyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisgICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlLmdldCgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nQ29ubmVjdGlv
bkNvdW50KTsKKyAgICAtLW1fcGVuZGluZ0Nvbm5lY3Rpb25Db3VudDsKICAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzU2V0LmFkZChSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+KGNhbGxiYWNrcykp
OwogfQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MpCiB7CisgICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlLmdldCgpKTsKICAgICBpZiAoIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSB8fCBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgIW1fcGVuZGluZ1NldFZlcnNpb25D
YWxscy5pc0VtcHR5KCkpCiAgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGlu
Z09wZW5DYWxsOjpjcmVhdGUoY2FsbGJhY2tzKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmICht
X2lkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpCiAgICAgICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAgZWxzZQorICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICsrbV9wZW5kaW5nQ29ubmVjdGlvbkNvdW50OwogICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3ModGhpcyk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
QEAgLTM5NSwxMiArNDA3LDEyIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y2xvc2Uo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzCiAgICAgUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MgPSBwcnBDYWxsYmFja3M7CiAgICAgQVNT
RVJUKG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuY29udGFpbnMoY2FsbGJhY2tzKSk7CiAgICAgbV9k
YXRhYmFzZUNhbGxiYWNrc1NldC5yZW1vdmUoY2FsbGJhY2tzKTsKLSAgICBpZiAobV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5zaXplKCkgPiAxKQorICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAotICAgIGlm
ICghbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5zaXplKCkpIHsKKyAgICBpZiAoIWNvbm5lY3Rpb25D
b3VudCgpKSB7CiAgICAgICAgIFRyYW5zYWN0aW9uU2V0IHRyYW5zYWN0aW9ucyhtX3RyYW5zYWN0
aW9ucyk7CiAgICAgICAgIGZvciAoVHJhbnNhY3Rpb25TZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
dHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IHRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkKICAg
ICAgICAgICAgICgqaXQpLT5hYm9ydCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IGNmYmNhM2I2
MzUzMDY2YTc3NWM0YzE3ODJmZjEwNDE5NjlkZDliYTIuLjE1NTcxYThjNDgwMzMxMjM3NjIwZDZh
YWY0NzYyZDU0NzBlODM3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTc4LDYgKzc4LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgb3BlbkludGVybmFsKCk7CiAgICAgdm9pZCBsb2FkT2JqZWN0
U3RvcmVzKCk7CisgICAgaW50MzJfdCBjb25uZWN0aW9uQ291bnQoKTsKICAgICB2b2lkIHByb2Nl
c3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW50
ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW1wbD4sIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbD4sIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPik7CkBAIC0xMTYsNiArMTE3LDEwIEBA
IHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0RlbGV0ZUNhbGw7CiAgICAgRGVxdWU8UmVmUHRy
PFBlbmRpbmdEZWxldGVDYWxsPiA+IG1fcGVuZGluZ0RlbGV0ZUNhbGxzOwogCisgICAgLy8gRklY
TUU6IEVsaW1pbmF0ZSB0aGUgbGltYm8gc3RhdGUgYmV0d2VlbiBvcGVuQ29ubmVjdGlvbigpIGFu
ZCByZWdpc3RlckZyb250ZW5kQ2FsbGJhY2tzKCkKKyAgICAvLyB0aGF0IHRoaXMgY291bnRlciB0
cmFja3MuCisgICAgaW50MzJfdCBtX3BlbmRpbmdDb25uZWN0aW9uQ291bnQ7CisKICAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0PFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gPiBEYXRhYmFzZUNh
bGxiYWNrc1NldDsKICAgICBEYXRhYmFzZUNhbGxiYWNrc1NldCBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDYwOGI3YzNmYTU5MWQ1ODMzMmRhNDdm
ZTE5NmZlMDE4Zjk0ZmIxYmQuLjQ0N2JhNzc1MTAzNWM4ZTk3ZTQ3MDE3Y2Q3ZDc2YTBjNzIxNTJh
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtMTgyLDggKzE4Miw4IEBAIHZvaWQgSURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxs
YmFja3MqIGNhbGxiCiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJh
c2VCYWNrZW5kID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlKG5hbWUsIGJhY2tpbmdT
dG9yZS5nZXQoKSwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpLCB0aGlzLCB1bmlxdWVJ
ZGVudGlmaWVyKTsKICAgICBpZiAoZGF0YWJhc2VCYWNrZW5kKSB7Ci0gICAgICAgIGNhbGxiYWNr
cy0+b25TdWNjZXNzKFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KGRhdGFiYXNl
QmFja2VuZC5nZXQoKSkucmVsZWFzZSgpKTsKICAgICAgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAu
c2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgICAgIGRh
dGFiYXNlQmFja2VuZC0+b3BlbkNvbm5lY3Rpb24oY2FsbGJhY2tzKTsKICAgICB9IGVsc2UKICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cAppbmRleCA4M2YwZjJkN2JkNWVkMzkyM2NhNWNiZGY2OWFiYTQ0OWY0Njk0ZDhjLi44YzRiZmY1
ZmQ4YTJhOTJiMWQ0M2RjOTdhNGU1YzU3ZDNhNjQ3NzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAKICNpbmNsdWRlICJJREJDYWxsYmFja3MuaCIKICNpbmNsdWRlICJJREJDdXJzb3IuaCIK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSAiSURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURC
S2V5LmgiCkBAIC0xMTUsNiArMTE2LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb25C
bG9ja2VkKCkgeyB9CiB9OwogCitjbGFzcyBJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNrcyA6
IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3M+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkp
OworICAgIH0KKworICAgIHZpcnR1YWwgfkluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkg
eyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGNvbnN0IFN0cmluZyYgdmVy
c2lvbikgeyB9Citwcml2YXRlOgorICAgIEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkg
eyB9Cit9OworCisKIGNsYXNzIEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2sgOiBwdWJs
aWMgSURCVHJhbnNhY3Rpb25DYWxsYmFja3MgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2s+IGNyZWF0ZSgpCkBAIC0xNzIsNiAr
MTg4LDI4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pID0gMDsKIH07CiAKK2NsYXNzIERhdGFiYXNlQ29u
bmVjdGlvbiB7CitwdWJsaWM6CisgICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKKyAgICAgICAgOiBt
X2lkYkRhdGFiYXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVh
dGUoKSkgeyB9CisKKyAgICB2b2lkIGNvbm5lY3QoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tl
bmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlKQorICAgIHsKKyAgICAgICAgbV9pZGJEYXRhYmFzZSA9
IGlkYkRhdGFiYXNlOworICAgICAgICBtX2lkYkRhdGFiYXNlLT5yZWdpc3RlckZyb250ZW5kQ2Fs
bGJhY2tzKG1faWRiRGF0YWJhc2VDYWxsYmFja3MpOworICAgIH0KKworICAgIH5EYXRhYmFzZUNv
bm5lY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKG1faWRiRGF0YWJhc2UpCisgICAgICAgICAg
ICBtX2lkYkRhdGFiYXNlLT5jbG9zZShtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9pZGJE
YXRhYmFzZTsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1faWRiRGF0YWJhc2VD
YWxsYmFja3M7Cit9OworCiBjbGFzcyBPcGVuRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBJbnNw
ZWN0b3JJREJDYWxsYmFjayB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkRh
dGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShFeGVjdXRhYmxlV2l0aERhdGFiYXNlKiBleGVjdXRhYmxl
V2l0aERhdGFiYXNlKQpAQCAtMTgxLDggKzIxOSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fk9wZW5EYXRhYmFzZUNhbGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKKyAg
ICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50
ZXJmYWNlPiBwcnBEYXRhYmFzZSkKICAgICB7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbnRlcmZhY2U+IGlkYkRhdGFiYXNlID0gcHJwRGF0YWJhc2U7CiAgICAgICAgIG1fZXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZS0+ZXhlY3V0ZShpZGJEYXRhYmFzZSk7CiAgICAgfQogCkBAIC0y
NjMsOCArMzAyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkRhdGFiYXNlTG9hZGVyQ2Fs
bGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJEYXRhYmFzZSkKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2Up
CiAgICAgeworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBpZGJE
YXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBtX2Nvbm5lY3Rpb24uY29ubmVjdChpZGJE
YXRhYmFzZSk7CiAgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVyLT5mcm9udGVuZCgpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMTUsNiArMzU2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpIHsgfQogICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOwogICAgIGlu
dCBtX3JlcXVlc3RJZDsKKyAgICBEYXRhYmFzZUNvbm5lY3Rpb24gbV9jb25uZWN0aW9uOwogfTsK
IAogc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KElu
c3BlY3Rvck9iamVjdCoga2V5KQpAQCAtNDMwLDYgKzQ3Miw4IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PEtleT4ga2V5RnJvbUlEQktleShJREJLZXkqIGlkYktleSkKICAgICByZXR1cm4ga2V5LnJlbGVh
c2UoKTsKIH0KIAorY2xhc3MgRGF0YUxvYWRlckNhbGxiYWNrOworCiBjbGFzcyBPcGVuQ3Vyc29y
Q2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgewogcHVibGljOgogICAgIGVu
dW0gQ3Vyc29yVHlwZSB7CkBAIC00MzcsOSArNDgxLDkgQEAgcHVibGljOgogICAgICAgICBJbmRl
eERhdGFDdXJzb3IKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkN1cnNvckNh
bGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRl
bmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHQsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2Fj
dGlvbiwgQ3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBpbnQgcmVxdWVzdElkLCBpbnQgc2tpcENvdW50
LCB1bnNpZ25lZCBwYWdlU2l6ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxPcGVuQ3Vyc29yQ2Fs
bGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpGcm9udGVu
ZFByb3ZpZGVyPiBmcm9udGVuZFByb3ZpZGVyLCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dCwgUGFzc1JlZlB0cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGRhdGFMb2FkZXJDYWxsYmFjaywgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5zYWN0aW9uLCBD
dXJzb3JUeXBlIGN1cnNvclR5cGUsIGludCByZXF1ZXN0SWQsIGludCBza2lwQ291bnQsIHVuc2ln
bmVkIHBhZ2VTaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuQ3Vy
c29yQ2FsbGJhY2soZnJvbnRlbmRQcm92aWRlciwgaW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0
aW9uLCBjdXJzb3JUeXBlLCByZXF1ZXN0SWQsIHNraXBDb3VudCwgcGFnZVNpemUpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBPcGVuQ3Vyc29yQ2FsbGJhY2soZnJvbnRlbmRQcm92aWRl
ciwgaW5qZWN0ZWRTY3JpcHQsIGRhdGFMb2FkZXJDYWxsYmFjaywgaWRiVHJhbnNhY3Rpb24sIGN1
cnNvclR5cGUsIHJlcXVlc3RJZCwgc2tpcENvdW50LCBwYWdlU2l6ZSkpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgfk9wZW5DdXJzb3JDYWxsYmFjaygpIHsgfQpAQCAtNDkxLDYgKzUzNSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW5kKGJvb2wgaGFzTW9yZSkKICAgICB7CisgICAgICAgIG1fZGF0
YUxvYWRlckNhbGxiYWNrLmNsZWFyKCk7CiAgICAgICAgIGlmICghbV9mcm9udGVuZFByb3ZpZGVy
LT5mcm9udGVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01MDksOSArNTU0LDEwIEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgT3BlbkN1cnNvckNhbGxiYWNrKFBhc3NS
ZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5k
UHJvdmlkZXIsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gaWRiVHJhbnNhY3Rpb24sIEN1cnNvclR5cGUgY3Vy
c29yVHlwZSwgaW50IHJlcXVlc3RJZCwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUp
CisgICAgT3BlbkN1cnNvckNhbGxiYWNrKFBhc3NSZWZQdHI8SW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQ6OkZyb250ZW5kUHJvdmlkZXI+IGZyb250ZW5kUHJvdmlkZXIsIEluamVjdGVkU2NyaXB0IGlu
amVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gZGF0YUxvYWRlckNh
bGxiYWNrLCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gaWRiVHJh
bnNhY3Rpb24sIEN1cnNvclR5cGUgY3Vyc29yVHlwZSwgaW50IHJlcXVlc3RJZCwgaW50IHNraXBD
b3VudCwgdW5zaWduZWQgcGFnZVNpemUpCiAgICAgICAgIDogbV9mcm9udGVuZFByb3ZpZGVyKGZy
b250ZW5kUHJvdmlkZXIpCiAgICAgICAgICwgbV9pbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlw
dCkKKyAgICAgICAgLCBtX2RhdGFMb2FkZXJDYWxsYmFjayhkYXRhTG9hZGVyQ2FsbGJhY2spCiAg
ICAgICAgICwgbV9pZGJUcmFuc2FjdGlvbihpZGJUcmFuc2FjdGlvbikKICAgICAgICAgLCBtX2N1
cnNvclR5cGUoY3Vyc29yVHlwZSkKICAgICAgICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCkBA
IC01MjMsNiArNTY5LDcgQEAgcHJpdmF0ZToKICAgICB9CiAgICAgUmVmUHRyPEluc3BlY3Rvcklu
ZGV4ZWREQkFnZW50OjpGcm9udGVuZFByb3ZpZGVyPiBtX2Zyb250ZW5kUHJvdmlkZXI7CiAgICAg
SW5qZWN0ZWRTY3JpcHQgbV9pbmplY3RlZFNjcmlwdDsKKyAgICBSZWZQdHI8RGF0YUxvYWRlckNh
bGxiYWNrPiBtX2RhdGFMb2FkZXJDYWxsYmFjazsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlPiBtX2lkYlRyYW5zYWN0aW9uOwogICAgIEN1cnNvclR5cGUgbV9jdXJz
b3JUeXBlOwogICAgIGludCBtX3JlcXVlc3RJZDsKQEAgLTU0MSw4ICs1ODgsMTAgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+RGF0YUxvYWRlckNhbGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRi
RGF0YWJhc2UpCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQogICAgIHsKKyAgICAgICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKKyAg
ICAgICAgbV9jb25uZWN0aW9uLmNvbm5lY3QoaWRiRGF0YWJhc2UpOwogICAgICAgICBpZiAoIW1f
ZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NTU4LDEyICs2MDcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2Fs
bGJhY2s+IG9wZW5DdXJzb3JDYWxsYmFjayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1f
ZnJvbnRlbmRQcm92aWRlciwgbV9pbmplY3RlZFNjcmlwdCwgaWRiVHJhbnNhY3Rpb24uZ2V0KCks
IE9wZW5DdXJzb3JDYWxsYmFjazo6SW5kZXhEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJZCwgbV9za2lw
Q291bnQsIG1fcGFnZVNpemUpOworICAgICAgICAgICAgUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFj
az4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNhbGxiYWNrOjpjcmVhdGUobV9mcm9u
dGVuZFByb3ZpZGVyLCBtX2luamVjdGVkU2NyaXB0LCB0aGlzLCBpZGJUcmFuc2FjdGlvbi5nZXQo
KSwgT3BlbkN1cnNvckNhbGxiYWNrOjpJbmRleERhdGFDdXJzb3IsIG1fcmVxdWVzdElkLCBtX3Nr
aXBDb3VudCwgbV9wYWdlU2l6ZSk7CiAKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgICAgICAgICAgaWRiSW5kZXgtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vy
c29yOjpORVhULCBvcGVuQ3Vyc29yQ2FsbGJhY2ssIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBlYyk7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNr
PiBvcGVuQ3Vyc29yQ2FsbGJhY2sgPSBPcGVuQ3Vyc29yQ2FsbGJhY2s6OmNyZWF0ZShtX2Zyb250
ZW5kUHJvdmlkZXIsIG1faW5qZWN0ZWRTY3JpcHQsIGlkYlRyYW5zYWN0aW9uLmdldCgpLCBPcGVu
Q3Vyc29yQ2FsbGJhY2s6Ok9iamVjdFN0b3JlRGF0YUN1cnNvciwgbV9yZXF1ZXN0SWQsIG1fc2tp
cENvdW50LCBtX3BhZ2VTaXplKTsKKyAgICAgICAgICAgIFJlZlB0cjxPcGVuQ3Vyc29yQ2FsbGJh
Y2s+IG9wZW5DdXJzb3JDYWxsYmFjayA9IE9wZW5DdXJzb3JDYWxsYmFjazo6Y3JlYXRlKG1fZnJv
bnRlbmRQcm92aWRlciwgbV9pbmplY3RlZFNjcmlwdCwgdGhpcywgaWRiVHJhbnNhY3Rpb24uZ2V0
KCksIE9wZW5DdXJzb3JDYWxsYmFjazo6T2JqZWN0U3RvcmVEYXRhQ3Vyc29yLCBtX3JlcXVlc3RJ
ZCwgbV9za2lwQ291bnQsIG1fcGFnZVNpemUpOwogCiAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICAgICAgICAgIGlkYk9iamVjdFN0b3JlLT5vcGVuQ3Vyc29yKG1faWRiS2V5
UmFuZ2UsIElEQkN1cnNvcjo6TkVYVCwgb3BlbkN1cnNvckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlv
bi5nZXQoKSwgZWMpOwpAQCAtNTg4LDYgKzYzNyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPElE
QktleVJhbmdlPiBtX2lkYktleVJhbmdlOwogICAgIGludCBtX3NraXBDb3VudDsKICAgICB1bnNp
Z25lZCBtX3BhZ2VTaXplOworICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CiB9
OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9JREJEYXRhYmFzZUJhY2tlbmRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSURCRGF0YWJhc2VCYWNrZW5kVGVzdC5jcHAKaW5kZXggMDk4YTczMjdmMmM3ZTRkOTZi
NGI2ZDAzNGRiZTYzMDY2YmM1NWQ3Yy4uNjI5ZmU5MzM4MGFjMWViMzgzMjZmZmExODQ4YTliNTcx
NzE5NWZhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJEYXRh
YmFzZUJhY2tlbmRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lE
QkRhdGFiYXNlQmFja2VuZFRlc3QuY3BwCkBAIC02Nyw2ICs2Nyw3MCBAQCBURVNUKElEQkRhdGFi
YXNlQmFja2VuZFRlc3QsIEJhY2tpbmdTdG9yZVJldGVudGlvbikKICAgICBFWFBFQ1RfVFJVRShi
YWNraW5nU3RvcmUtPmhhc09uZVJlZigpKTsKIH0KIAorY2xhc3MgTW9ja0lEQkNhbGxiYWNrcyA6
IHB1YmxpYyBJREJDYWxsYmFja3MgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1v
Y2tJREJDYWxsYmFja3M+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNb2NrSURCQ2Fs
bGJhY2tzKCkpOyB9CisgICAgdmlydHVhbCB+TW9ja0lEQkNhbGxiYWNrcygpIE9WRVJSSURFCisg
ICAgeworICAgICAgICBFWFBFQ1RfVFJVRShtX3dhc1N1Y2Nlc3NEQkNhbGxlZCk7CisgICAgfQor
ICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIE9W
RVJSSURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PikgT1ZFUlJJREUgeyB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVm
UHRyPElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPikg
T1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fd2FzU3VjY2Vzc0RCQ2FsbGVkID0gdHJ1ZTsKKyAg
ICB9CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pIE9WRVJS
SURFIHsgfQorICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPikgT1ZFUlJJREUgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhDb250aW51YXRpb24oKSBPVkVSUklERSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8SURCS2V5PiA+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0
b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBvbkJsb2NrZWQoKSBPVkVSUklERSB7IH0KK3ByaXZhdGU6CisgICAgTW9ja0lE
QkNhbGxiYWNrcygpCisgICAgICAgIDogbV93YXNTdWNjZXNzREJDYWxsZWQoZmFsc2UpIHsgfQor
ICAgIGJvb2wgbV93YXNTdWNjZXNzREJDYWxsZWQ7Cit9OworCitjbGFzcyBGYWtlSURCRGF0YWJh
c2VDYWxsYmFja3MgOiBwdWJsaWMgSURCRGF0YWJhc2VDYWxsYmFja3MgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcz4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IEZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpKTsgfQorICAgIHZp
cnR1YWwgfkZha2VJREJEYXRhYmFzZUNhbGxiYWNrcygpIE9WRVJSSURFIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSBPVkVSUklERSB7
IH0KK3ByaXZhdGU6CisgICAgRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9Cit9OworCitU
RVNUKElEQkRhdGFiYXNlQmFja2VuZFRlc3QsIENvbm5lY3Rpb25MaWZlY3ljbGUpCit7CisgICAg
UmVmUHRyPElEQkZha2VCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IGFkb3B0UmVmKG5ldyBJ
REJGYWtlQmFja2luZ1N0b3JlKCkpOworICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFz
T25lUmVmKCkpOworCisgICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciogY29vcmRpbmF0b3Ig
PSAwOworICAgIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSA9IDA7CisgICAgUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEltcGw+IGRiID0gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3Jl
YXRlKCJkYiIsIGJhY2tpbmdTdG9yZS5nZXQoKSwgY29vcmRpbmF0b3IsIGZhY3RvcnksICJ1bmlx
dWVpZCIpOworICAgIEVYUEVDVF9HVChiYWNraW5nU3RvcmUtPnJlZkNvdW50KCksIDEpOworCisg
ICAgUmVmUHRyPE1vY2tJREJDYWxsYmFja3M+IHJlcXVlc3QxID0gTW9ja0lEQkNhbGxiYWNrczo6
Y3JlYXRlKCk7CisgICAgZGItPm9wZW5Db25uZWN0aW9uKHJlcXVlc3QxKTsKKworICAgIFJlZlB0
cjxGYWtlSURCRGF0YWJhc2VDYWxsYmFja3M+IGNvbm5lY3Rpb24xID0gRmFrZUlEQkRhdGFiYXNl
Q2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBkYi0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhj
b25uZWN0aW9uMSk7CisKKyAgICBSZWZQdHI8TW9ja0lEQkNhbGxiYWNrcz4gcmVxdWVzdDIgPSBN
b2NrSURCQ2FsbGJhY2tzOjpjcmVhdGUoKTsKKyAgICBkYi0+b3BlbkNvbm5lY3Rpb24ocmVxdWVz
dDIpOworCisgICAgZGItPmNsb3NlKGNvbm5lY3Rpb24xKTsKKyAgICBFWFBFQ1RfR1QoYmFja2lu
Z1N0b3JlLT5yZWZDb3VudCgpLCAxKTsKKworICAgIFJlZlB0cjxGYWtlSURCRGF0YWJhc2VDYWxs
YmFja3M+IGNvbm5lY3Rpb24yID0gRmFrZUlEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKTsK
KyAgICBkYi0+cmVnaXN0ZXJGcm9udGVuZENhbGxiYWNrcyhjb25uZWN0aW9uMik7CisKKyAgICBk
Yi0+Y2xvc2UoY29ubmVjdGlvbjIpOworICAgIEVYUEVDVF9UUlVFKGJhY2tpbmdTdG9yZS0+aGFz
T25lUmVmKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>