<?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>69264</bug_id>
          
          <creation_ts>2011-10-03 09:22:55 -0700</creation_ts>
          <short_desc>IndexedDB: Remove SQLite-LevelDB migration code</short_desc>
          <delta_ts>2011-10-06 01:59:29 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477020</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-03 09:22:55 -0700</bug_when>
    <thetext>IndexedDB: Remove SQLite-LevelDB migration code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477023</commentid>
    <comment_count>1</comment_count>
      <attachid>109491</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-03 09:26:22 -0700</bug_when>
    <thetext>Created attachment 109491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477077</commentid>
    <comment_count>2</comment_count>
      <attachid>109491</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-03 10:54:20 -0700</bug_when>
    <thetext>Comment on attachment 109491
Patch

LGTM

Is the next step to get rid of USE(LEVELDB)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477655</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-04 09:49:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 109491 [details])
&gt; LGTM
&gt; 
&gt; Is the next step to get rid of USE(LEVELDB)?

Yes, ENABLE(INDEXEDDB) would imply using LevelDB, because that&apos;ll be the only back-end.

Tony: would you like to take an official-reviewer look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477834</commentid>
    <comment_count>4</comment_count>
      <attachid>109491</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 12:17:51 -0700</bug_when>
    <thetext>Comment on attachment 109491
Patch

Are there uses with indexdb data still in sqlite format or am I misunderstanding what this code is for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477841</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-04 12:22:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 109491 [details])
&gt; Are there uses with indexdb data still in sqlite format or am I misunderstanding what this code is for?

We think that there are no remaining users with IDB data stored in sqlite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477878</commentid>
    <comment_count>6</comment_count>
      <attachid>109491</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-04 13:31:09 -0700</bug_when>
    <thetext>Comment on attachment 109491
Patch

I&apos;m skeptical, but if you say so.  What if there&apos;s a user who hasn&apos;t run chromium for the past 6 months?

Historically, we keep migration code forever.  For example, the history database format has changed many times, but we still have all the migration code in handle formats that are 3+ years old.

Is there a large benefit to removing the migration code?  Certainly code for writing to sqlite can be removed, but that seems orthogonal to the migration code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477898</commentid>
    <comment_count>7</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-10-04 13:48:10 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 109491 [details])
&gt; I&apos;m skeptical, but if you say so.  What if there&apos;s a user who hasn&apos;t run chromium for the past 6 months?

You&apos;re right, &quot;no remaining users with sqlite data&quot; is a bit strong.  I suppose &quot;anyone that still has sqlite data doesn&apos;t care about it&quot; would be more accurate.

We&apos;ve talked about it a bunch and decided that removing the sqlite code is worth losing any residual sqlite stores.  Between the fact that IDB isn&apos;t yet widely adopted (let alone 6 months ago) and that most apps just it as a cache or temporary storage, we&apos;re not really worried about it.  (We considered not writing any migration code at all.)

&gt; Is there a large benefit to removing the migration code?  Certainly code for writing to sqlite can be removed, but that seems orthogonal to the migration code.

I could see the merit in that; I&apos;ll let Hans respond.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478267</commentid>
    <comment_count>8</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-05 04:18:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Is there a large benefit to removing the migration code?  Certainly code for writing to sqlite can be removed, but that seems orthogonal to the migration code.
&gt; 

The benefit is that it cleans up our existing code for opening a database, and it reduces the amount of code we need to maintain.

The plan is to remove all of the IndexedDB SQLite code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478480</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-10-05 10:34:11 -0700</bug_when>
    <thetext>It looks like I was wrong about the Chromium history database.  According to the comments, it supports versions that any shipping product supports.  If we want to use the same rule here, we should keep the migration code until we stop shipping Chromium that would create a sqlite backed indexdb.

Is it possible for Chromium 14 to use the sqlite backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478542</commentid>
    <comment_count>10</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-05 11:36:39 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; It looks like I was wrong about the Chromium history database.  According to the comments, it supports versions that any shipping product supports.  If we want to use the same rule here, we should keep the migration code until we stop shipping Chromium that would create a sqlite backed indexdb.
&gt; 
&gt; Is it possible for Chromium 14 to use the sqlite backend?

No version of Chrome from 14 and onwards will create a SQLite database for IndexedDB. Anyone who has had Chrome 14 or 15 will have been migrated. So we feel it&apos;s safe to remove it now.

I&apos;ll land this tomorrow unless someone raises objections.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479024</commentid>
    <comment_count>11</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-10-06 01:59:29 -0700</bug_when>
    <thetext>Committed r96793: &lt;http://trac.webkit.org/changeset/96793&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109491</attachid>
            <date>2011-10-03 09:26:22 -0700</date>
            <delta_ts>2011-10-06 00:58:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69264-20111003172620.patch</filename>
            <type>text/plain</type>
            <size>26448</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY0ODQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNTVjMWVkODRmMTI0NTUwMDVlMzg1
N2UzNjNlMWRjMTQxMWQ2NjM4Li45MTgzY2ZjMzljMzk5ZTNmOGQ5ZjJkZmNlZDQ5N2Q4NmZhOTE4
NDg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTAtMDMgIEhhbnMgV2VubmJvcmcgIDxo
YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJlbW92ZSBTUUxpdGUtTGV2
ZWxEQiBtaWdyYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjkyNjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgbGF5b3V0IHRlc3QgY292ZXJpbmcgbWlncmF0aW9uLgorCisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvbWlncmF0ZS1iYXNpY3MtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL21pZ3JhdGUtYmFzaWNzLmh0bWw6IFJl
bW92ZWQuCisKIDIwMTEtMTAtMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIG1ldGhvZC9lbmN0eXBlL2Zvcm1NZXRob2QvZm9ybUVuY3R5cGUgcHJvcGVydGll
cyBzaG91bGQgYmUgbGltaXRlZCB0byBrbm93biB2YWx1ZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9taWdyYXRlLWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9taWdyYXRlLWJhc2ljcy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3ZWZkYTU1MDczZmNhNmIyNTJkODEwZThhYjFh
MTVmNGNkMDkyY2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvbWlncmF0ZS1iYXNpY3MtZXhwZWN0ZWQu
dHh0CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotVGVzdCBtaWdyYXRpb24gZnJvbSBT
UUxpdGUgdG8gTGV2ZWxEQi4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLXdlYmtp
dEluZGV4ZWREQi5vcGVuKCdNaWdyYXRpb25EYXRhYmFzZScpCi1zcWxpdGVDcmVhdGVTdWNjZXNz
KCk6Ci1kYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKLWRiLnNldFZlcnNpb24oJ25ldyB2ZXJzaW9u
JykKLXNxbGl0ZVNldFZlcnNpb25TdWNjZXNzKCk6Ci13aW5kb3cuZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ01pZ3JhdGlvblBsYWluT2xkU3RvcmUnLCB7YXV0b0luY3JlbWVudDogZmFsc2V9KQotc3Rv
cmUgPSB3aW5kb3cuZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ01pZ3JhdGlvblN0b3JlV2l0aEtleVBh
dGgnLCB7a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pCi13aW5kb3cuZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ01pZ3JhdGlvblN0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7YXV0b0lu
Y3JlbWVudDogdHJ1ZX0pCi10cmFucyA9IGRiLnRyYW5zYWN0aW9uKFtdLCB3ZWJraXRJREJUcmFu
c2FjdGlvbi5SRUFEX1dSSVRFKQotaW5kZXggPSBzdG9yZS5jcmVhdGVJbmRleCgnRXhhbXBsZUlu
ZGV4JywnaWQnLCBmYWxzZSkKLXNxbGl0ZVRlc3RBZGRSZWNvcmRzMSgpOgotc3RvcmUgPSB0cmFu
cy5vYmplY3RTdG9yZSgnTWlncmF0aW9uUGxhaW5PbGRTdG9yZScpCi1zdG9yZSA9IHN0b3JlLmFk
ZCh7bmFtZTogJ0dlb3JnZSd9LDEpCi1zcWxpdGVUZXN0QWRkUmVjb3JkczIoKToKLXN0b3JlID0g
dHJhbnMub2JqZWN0U3RvcmUoJ01pZ3JhdGlvblN0b3JlV2l0aEtleVBhdGgnKQotc3RvcmUuYWRk
KHtuYW1lOiAnVGhvbWFzJywgaWQ6IDN9KQotc3FsaXRlVGVzdEFkZFJlY29yZHMzKCk6Ci1zdG9y
ZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdNaWdyYXRpb25TdG9yZVdpdGhBdXRvSW5jcmVtZW50JykK
LXN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30sIDUpCi1sZXZlbGRi
T3BlblN1Y2Nlc3MoKToKLWRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAotdHJhbnMgPSBkYi50cmFu
c2FjdGlvbihbXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSwgMCkKLWxldmVsZGJD
aGVja1BsYWluT2xkU3RvcmUoKToKLXN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ01pZ3JhdGlv
blBsYWluT2xkU3RvcmUnKQotcmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2UpCi1s
ZXZlbGRiQ2hlY2tQbGFpbk9sZFN0b3JlQ3Vyc29yTmV4dCgpOgotUEFTUyBjdXJzb3IudmFsdWUu
bmFtZSA9PSAnR2VvcmdlJyBpcyB0cnVlCi1sZXZlbGRiQ2hlY2tQbGFpbk9sZFN0b3JlQ3Vyc29y
TmV4dCgpOgotbGV2ZWxkYkNoZWNrU3RvcmVXaXRoS2V5UGF0aCgpOgotc3RvcmUgPSB0cmFucy5v
YmplY3RTdG9yZSgnTWlncmF0aW9uU3RvcmVXaXRoS2V5UGF0aCcpCi1sZXZlbGRiQ2hlY2tTdG9y
ZVdpdGhLZXlQYXRoQ3Vyc29yTmV4dCgpOgotUEFTUyAoKHdpbmRvdy5pbmRleCA9IHdpbmRvdy5z
dG9yZS5pbmRleCgnRXhhbXBsZUluZGV4JykpICE9IHVuZGVmaW5lZCkgaXMgdHJ1ZQotUEFTUyAo
d2luZG93LmtleUluZGV4Q3Vyc29yLmtleSA9PSAzKSBpcyB0cnVlCi1QQVNTIGN1cnNvci52YWx1
ZS5uYW1lID09ICdUaG9tYXMnIGlzIHRydWUKLVBBU1MgY3Vyc29yLnZhbHVlLmlkID09ICczJyBp
cyB0cnVlCi1sZXZlbGRiQ2hlY2tTdG9yZVdpdGhLZXlQYXRoQ3Vyc29yTmV4dCgpOgotbGV2ZWxk
YkNoZWNrU3RvcmVXaXRoQXV0b0luY3JlbWVudCgpOgotc3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnTWlncmF0aW9uU3RvcmVXaXRoQXV0b0luY3JlbWVudCcpCi1sZXZlbGRiQ2hlY2tTdG9yZVdp
dGhBdXRvSW5jcmVtZW50Q3Vyc29yTmV4dCgpOgotUEFTUyBjdXJzb3IudmFsdWUubmFtZSA9PSAn
TGluY29sbicgaXMgdHJ1ZQotUEFTUyBjdXJzb3IudmFsdWUubnVtYmVyID09ICc3MDEyJyBpcyB0
cnVlCi1sZXZlbGRiQ2hlY2tTdG9yZVdpdGhBdXRvSW5jcmVtZW50Q3Vyc29yTmV4dCgpOgotUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21pZ3JhdGUtYmFzaWNzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9taWdyYXRlLWJhc2ljcy5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzZlMDYyNTdkYTI4YzYzYzIxOTcyNzZiMWQ5OTRiZGU5
N2FjMjNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL21pZ3JhdGUtYmFzaWNzLmh0bWwKKysrIC9kZXYv
bnVsbApAQCAtMSwyMDggKzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qt
ZnVuY3Rpb24uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMi
Pjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLQotZGVzY3JpcHRpb24oIlRlc3QgbWln
cmF0aW9uIGZyb20gU1FMaXRlIHRvIExldmVsREIuIik7Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwot
Ci1mdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRPdmVycmlkZUluZGV4ZWREQkJhY2tp
bmdTdG9yZSgic3FsaXRlIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygid2Via2l0SW5k
ZXhlZERCLm9wZW4oJ01pZ3JhdGlvbkRhdGFiYXNlJykiKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IHNxbGl0ZU9wZW5TdWNjZXNzOwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBzcWxpdGVPcGVuU3VjY2VzcygpCi17Ci0gICAg
ZGVidWcoInNxbGl0ZUNyZWF0ZVN1Y2Nlc3MoKToiKTsKLSAgICB3aW5kb3cuZGIgPSBldmFsQW5k
TG9nKCJkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQiKTsKLQotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpIik7Ci0gICAgcmVxdWVzdC5vbnN1Y2Nl
c3MgPSBzcWxpdGVTZXRWZXJzaW9uU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4
cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3FsaXRlU2V0VmVyc2lvblN1Y2Nl
c3MoKQotewotICAgIGRlYnVnKCJzcWxpdGVTZXRWZXJzaW9uU3VjY2VzcygpOiIpOwotICAgIGV2
YWxBbmRMb2coIndpbmRvdy5kYi5jcmVhdGVPYmplY3RTdG9yZSgnTWlncmF0aW9uUGxhaW5PbGRT
dG9yZScsIHthdXRvSW5jcmVtZW50OiBmYWxzZX0pIik7Ci0gICAgd2luZG93LnN0b3JlID0gZXZh
bEFuZExvZygic3RvcmUgPSB3aW5kb3cuZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ01pZ3JhdGlvblN0
b3JlV2l0aEtleVBhdGgnLCB7a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7
Ci0gICAgZXZhbEFuZExvZygid2luZG93LmRiLmNyZWF0ZU9iamVjdFN0b3JlKCdNaWdyYXRpb25T
dG9yZVdpdGhBdXRvSW5jcmVtZW50Jywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwotCi0gICAg
d2luZG93LnRyYW5zID0gZXZhbEFuZExvZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbXSwgd2Vi
a2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURSkiKTsKLSAgICB3aW5kb3cuaW5kZXggPSBldmFs
QW5kTG9nKCJpbmRleCA9IHN0b3JlLmNyZWF0ZUluZGV4KCdFeGFtcGxlSW5kZXgnLCdpZCcsIGZh
bHNlKSIpOwotCi0gICAgc3FsaXRlVGVzdEFkZFJlY29yZHMxKCk7Ci19Ci0KLWZ1bmN0aW9uIHNx
bGl0ZVRlc3RBZGRSZWNvcmRzMSgpCi17Ci0gICAgZGVidWcoInNxbGl0ZVRlc3RBZGRSZWNvcmRz
MSgpOiIpOwotICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2Jq
ZWN0U3RvcmUoJ01pZ3JhdGlvblBsYWluT2xkU3RvcmUnKSIpOwotICAgIHJlcXVlc3QgPSBldmFs
QW5kTG9nKCJzdG9yZSA9IHN0b3JlLmFkZCh7bmFtZTogJ0dlb3JnZSd9LDEpIik7Ci0gICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBzcWxpdGVUZXN0QWRkUmVjb3JkczI7Ci0gICAgcmVxdWVzdC5vbmZh
aWx1cmUgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKLX0KLQotZnVuY3Rpb24gc3FsaXRlVGVz
dEFkZFJlY29yZHMyKCkKLXsKLSAgICBkZWJ1Zygic3FsaXRlVGVzdEFkZFJlY29yZHMyKCk6Iik7
Ci0gICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnTWlncmF0aW9uU3RvcmVXaXRoS2V5UGF0aCcpIik7Ci0KLSAgICByZXF1ZXN0ID0gZXZhbEFu
ZExvZygic3RvcmUuYWRkKHtuYW1lOiAnVGhvbWFzJywgaWQ6IDN9KSIpOwotICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gc3FsaXRlVGVzdEFkZFJlY29yZHMzOwotICAgIHJlcXVlc3Qub25mYWlsdXJl
ID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci0KLWZ1bmN0aW9uIHNxbGl0ZVRlc3RBZGRS
ZWNvcmRzMygpCi17Ci0gICAgZGVidWcoInNxbGl0ZVRlc3RBZGRSZWNvcmRzMygpOiIpOwotICAg
IHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ01p
Z3JhdGlvblN0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIpOwotICAgIHJlcXVlc3QgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9LCA1KSIpOwot
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gc3FsaXRlQ2xvc2VEYXRhYmFzZTsKLSAgICByZXF1ZXN0
Lm9uZmFpbHVyZSA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi0KLWZ1bmN0aW9uIHNx
bGl0ZUNsb3NlRGF0YWJhc2UoKQotewotICAgIHdpbmRvdy5kYi5jbG9zZSgpOwotICAgIHdpbmRv
dy5kYiA9IG51bGw7Ci0gICAgd2luZG93LnRyYW5zID0gbnVsbDsKLSAgICBsZXZlbGRiT3Blbigp
OwotfQotCi1mdW5jdGlvbiBsZXZlbGRiT3BlbigpCi17Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0T3ZlcnJpZGVJ
bmRleGVkREJCYWNraW5nU3RvcmUoImxldmVsZGIiKTsKLQotICAgIC8vIFRoaXMgbmV4dCBsaW5l
IHdpbGwgdHJpZ2dlciB0aGUgbWlncmF0aW9uLgotICAgIHJlcXVlc3QgPSB3ZWJraXRJbmRleGVk
REIub3BlbignTWlncmF0aW9uRGF0YWJhc2UnKTsKLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGxl
dmVsZGJPcGVuU3VjY2VzczsKLSAgICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JD
YWxsYmFjazsKLX0KLQotZnVuY3Rpb24gbGV2ZWxkYk9wZW5TdWNjZXNzKCkKLXsKLSAgICBkZWJ1
ZygibGV2ZWxkYk9wZW5TdWNjZXNzKCk6Iik7Ci0gICAgd2luZG93LmRiID0gZXZhbEFuZExvZygi
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7Ci0gICAgd2luZG93LnRyYW5zID0gZXZhbEFuZExv
ZygidHJhbnMgPSBkYi50cmFuc2FjdGlvbihbXSwgd2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9X
UklURSwgMCkiKTsKLSAgICBsZXZlbGRiQ2hlY2tQbGFpbk9sZFN0b3JlKCk7Ci19Ci0KLWZ1bmN0
aW9uIGxldmVsZGJDaGVja1BsYWluT2xkU3RvcmUoKQotewotICAgIGRlYnVnKCJsZXZlbGRiQ2hl
Y2tQbGFpbk9sZFN0b3JlKCk6Iik7Ci0gICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3Rv
cmUgPSB0cmFucy5vYmplY3RTdG9yZSgnTWlncmF0aW9uUGxhaW5PbGRTdG9yZScpIik7Ci0gICAg
d2luZG93LmtleVJhbmdlID0gd2Via2l0SURCS2V5UmFuZ2UubG93ZXJCb3VuZCgwKTsKLSAgICBy
ZXF1ZXN0ID0gZXZhbEFuZExvZygicmVxdWVzdCA9IHN0b3JlLm9wZW5DdXJzb3Ioa2V5UmFuZ2Up
Iik7Ci0gICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgIHRlc3RNaWdyYXRpb25FbmQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGxldmVsZGJDaGVj
a1BsYWluT2xkU3RvcmVDdXJzb3JOZXh0OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOwotfQotCi1mdW5jdGlvbiBsZXZlbGRiQ2hlY2tQbGFpbk9sZFN0b3Jl
Q3Vyc29yTmV4dCgpCi17Ci0gICAgZGVidWcoImxldmVsZGJDaGVja1BsYWluT2xkU3RvcmVDdXJz
b3JOZXh0KCk6Iik7Ci0gICAgd2luZG93LmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0g
ICAgaWYgKCF3aW5kb3cuY3Vyc29yKSB7Ci0gICAgICAgIGxldmVsZGJDaGVja1N0b3JlV2l0aEtl
eVBhdGgoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlVHJ1ZSgiY3Vy
c29yLnZhbHVlLm5hbWUgPT0gJ0dlb3JnZSciKTsKLSAgICBjdXJzb3IuY29udGludWUoKTsKLX0K
LQotZnVuY3Rpb24gbGV2ZWxkYkNoZWNrU3RvcmVXaXRoS2V5UGF0aCgpCi17Ci0gICAgZGVidWco
ImxldmVsZGJDaGVja1N0b3JlV2l0aEtleVBhdGgoKToiKTsKLSAgICB3aW5kb3cuc3RvcmUgPSBl
dmFsQW5kTG9nKCJzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdNaWdyYXRpb25TdG9yZVdpdGhL
ZXlQYXRoJykiKTsKLSAgICB2YXIga2V5UmFuZ2UgPSB3ZWJraXRJREJLZXlSYW5nZS5sb3dlckJv
dW5kKDApOwotICAgIHJlcXVlc3QgPSBzdG9yZS5vcGVuQ3Vyc29yKGtleVJhbmdlKTsKLSAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGxldmVsZGJDaGVja1N0b3JlV2l0aEtleVBhdGhDdXJzb3JOZXh0
OwotICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOwotfQotCi1m
dW5jdGlvbiBsZXZlbGRiQ2hlY2tTdG9yZVdpdGhLZXlQYXRoQ3Vyc29yTmV4dCgpCi17Ci0gICAg
ZGVidWcoImxldmVsZGJDaGVja1N0b3JlV2l0aEtleVBhdGhDdXJzb3JOZXh0KCk6Iik7Ci0gICAg
d2luZG93LmN1cnNvciA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgaWYgKCF3aW5kb3cuY3Vy
c29yKSB7Ci0gICAgICAgIGxldmVsZGJDaGVja1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQoKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3VsZEJlVHJ1ZSgiKCh3aW5kb3cuaW5kZXgg
PSB3aW5kb3cuc3RvcmUuaW5kZXgoJ0V4YW1wbGVJbmRleCcpKSAhPSB1bmRlZmluZWQpIik7Ci0g
ICAgb3BlbktleUN1cnNvciA9IHdpbmRvdy5pbmRleC5vcGVuS2V5Q3Vyc29yKCk7Ci0gICAgb3Bl
bktleUN1cnNvci5vbnN1Y2Nlc3MgPSBsZXZlbGRiQ2hlY2tTdG9yZVdpdGhLZXlQYXRoQ3Vyc29y
TmV4dDI7Ci0gICAgb3BlbktleUN1cnNvci5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJh
Y2s7Ci19Ci0KLWZ1bmN0aW9uIGxldmVsZGJDaGVja1N0b3JlV2l0aEtleVBhdGhDdXJzb3JOZXh0
MigpCi17Ci0gICAgd2luZG93LmtleUluZGV4Q3Vyc29yID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsK
LSAgICBzaG91bGRCZVRydWUoIih3aW5kb3cua2V5SW5kZXhDdXJzb3Iua2V5ID09IDMpIik7Ci0g
ICAgc2hvdWxkQmVUcnVlKCJjdXJzb3IudmFsdWUubmFtZSA9PSAnVGhvbWFzJyIpOwotICAgIHNo
b3VsZEJlVHJ1ZSgiY3Vyc29yLnZhbHVlLmlkID09ICczJyIpOwotICAgIGN1cnNvci5jb250aW51
ZSgpOwotfQotCi1mdW5jdGlvbiBsZXZlbGRiQ2hlY2tTdG9yZVdpdGhBdXRvSW5jcmVtZW50KCkK
LXsKLSAgICBkZWJ1ZygibGV2ZWxkYkNoZWNrU3RvcmVXaXRoQXV0b0luY3JlbWVudCgpOiIpOwot
ICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J01pZ3JhdGlvblN0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIpOwotICAgIHZhciBrZXlSYW5nZSA9
IHdlYmtpdElEQktleVJhbmdlLmxvd2VyQm91bmQoMCk7Ci0gICAgcmVxdWVzdCA9IHN0b3JlLm9w
ZW5DdXJzb3Ioa2V5UmFuZ2UpOwotICAgIHJlcXVlc3Qub25zdWNjZXNzID0gbGV2ZWxkYkNoZWNr
U3RvcmVXaXRoQXV0b0luY3JlbWVudEN1cnNvck5leHQ7Ci0gICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Ci19Ci1mdW5jdGlvbiBsZXZlbGRiQ2hlY2tTdG9yZVdp
dGhBdXRvSW5jcmVtZW50Q3Vyc29yTmV4dCgpCi17Ci0gICAgZGVidWcoImxldmVsZGJDaGVja1N0
b3JlV2l0aEF1dG9JbmNyZW1lbnRDdXJzb3JOZXh0KCk6Iik7Ci0gICAgd2luZG93LmN1cnNvciA9
IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgaWYgKCF3aW5kb3cuY3Vyc29yKSB7Ci0gICAgICAg
IHRlc3RNaWdyYXRpb25FbmQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNob3Vs
ZEJlVHJ1ZSgiY3Vyc29yLnZhbHVlLm5hbWUgPT0gJ0xpbmNvbG4nIik7Ci0gICAgc2hvdWxkQmVU
cnVlKCJjdXJzb3IudmFsdWUubnVtYmVyID09ICc3MDEyJyIpOwotICAgIGN1cnNvci5jb250aW51
ZSgpOwotfQotCi0KLWZ1bmN0aW9uIHRlc3RNaWdyYXRpb25FbmQoKQotewotICAgIHdpbmRvdy5k
Yi5jbG9zZSgpOwotICAgIHdpbmRvdy5kYiA9IG51bGw7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0T3ZlcnJpZGVJ
bmRleGVkREJCYWNraW5nU3RvcmUoImRlZmF1bHQiKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5jbGVhckFsbERhdGFiYXNlcygpOwotICAgIGRvbmUoKTsKLX0KLQotdGVzdCgpOwotCi12YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKLQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYzQzMDI4ZTVkODg5NDdiZGNlNDcwOTRlYWU2MjU0NzliOTQ5ZGVkYi4u
OTNjNzIyYjg3YzUxZTkzZjg2OTM3NTQxNmE0MDRmZmVlOTU3NzNlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDExLTEwLTAzICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgU1FMaXRlLUxldmVsREIgbWlncmF0aW9u
IGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5
MjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIG1pZ3JhdGlvbiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIEp1c3QgcmVtb3ZpbmcgY29k
ZSwgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVu
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oOgorCiAyMDExLTEw
LTAyICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBtZXRob2Qv
ZW5jdHlwZS9mb3JtTWV0aG9kL2Zvcm1FbmN0eXBlIHByb3BlcnRpZXMgc2hvdWxkIGJlIGxpbWl0
ZWQgdG8ga25vd24gdmFsdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IGUxYTNmNzE5YWM5NGFhYTAxODBjNzk4ODhmYzQxNjdk
YmU3YjA0Y2YuLjUxYzUwYzQ1OTAyODQ0M2I3NjZmNjkwMjc5ZmNiMDBiZjQzZGY5N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAg
LTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgiCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJMZXZlbERCQmFja2lu
Z1N0b3JlLmgiCi0jaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oIgogI2luY2x1
ZGUgIklEQlNRTGl0ZUJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtMTE1LDIzICsxMTQs
NiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQogICAgIH0KIAogICAgIC8vIEZJWE1FOiBFdmVy
eXRoaW5nIGZyb20gbm93IG9uIHNob3VsZCBiZSBkb25lIG9uIGFub3RoZXIgdGhyZWFkLgotCi0j
aWYgVVNFKExFVkVMREIpCi0gICAgaWYgKGJhY2tpbmdTdG9yZVR5cGUgPT0gTGV2ZWxEQkJhY2tp
bmdTdG9yZSkgewotICAgICAgICBib29sIGhhc1NRTEJhY2tpbmdTdG9yZSA9IElEQlNRTGl0ZUJh
Y2tpbmdTdG9yZTo6YmFja2luZ1N0b3JlRXhpc3RzKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBuYW1l
LCBkYXRhRGlyKTsKLQotICAgICAgICAvLyBMYXlvdXRUZXN0czogU1FMaXRlIGJhY2tpbmcgc3Rv
cmUgbWF5IG5vdCBleGlzdCBvbiBkaXNrIGJ1dCBtYXkgZXhpc3QgaW4gY2FjaGUuCi0gICAgICAg
IFN0cmluZyBjYWNoZWRTcWxpdGVCYWNraW5nU3RvcmVJZGVudGlmaWVyID0gY29tcHV0ZUZpbGVJ
ZGVudGlmaWVyKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBTUUxpdGVCYWNraW5nU3RvcmUpOwotICAg
ICAgICBpZiAoIWhhc1NRTEJhY2tpbmdTdG9yZSAmJiAobV9iYWNraW5nU3RvcmVNYXAuZW5kKCkg
IT0gbV9iYWNraW5nU3RvcmVNYXAuZmluZChjYWNoZWRTcWxpdGVCYWNraW5nU3RvcmVJZGVudGlm
aWVyKSkpCi0gICAgICAgICAgICBoYXNTUUxCYWNraW5nU3RvcmUgPSB0cnVlOwotCi0gICAgICAg
IGlmIChoYXNTUUxCYWNraW5nU3RvcmUpIHsKLSAgICAgICAgICAgIGJvb2wgbWlncmF0aW9uU3Vj
Y2VlZGVkID0gbWlncmF0ZUZyb21TUUxpdGVUb0xldmVsREIobmFtZSwgc2VjdXJpdHlPcmlnaW4u
Z2V0KCksIGRhdGFEaXIsIG1heGltdW1TaXplKTsKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTSht
aWdyYXRpb25TdWNjZWVkZWQpOyAvLyBGSVhNRTogV2hlbiBtaWdyYXRpb24gaXMgYWN0dWFsbHkg
aW1wbGVtZW50ZWQsIHdlIG5lZWQgZXJyb3IgaGFuZGxpbmcgaGVyZS4KLSAgICAgICAgfQotICAg
IH0KLSNlbmRpZgotCiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0g
b3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpciwgbWF4aW11bVNpemUsIGJh
Y2tpbmdTdG9yZVR5cGUpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7CiAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOwpAQCAtMTY4LDEyOSArMTUwLDYg
QEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Bl
bkJhY2tpbmdTdG9yZShQYXNzUmVmUHRyPFMKICAgICByZXR1cm4gMDsKIH0KIAotI2lmIFVTRShM
RVZFTERCKQotCi1zdGF0aWMgYm9vbCBtaWdyYXRlT2JqZWN0U3RvcmVzKFBhc3NSZWZQdHI8SURC
QmFja2luZ1N0b3JlPiBmcm9tQmFja2luZ1N0b3JlLCBpbnQ2NF90IGZyb21EYXRhYmFzZUlkLCBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gdG9CYWNraW5nU3RvcmUsIGludDY0X3QgdG9EYXRh
YmFzZUlkKQotewotICAgIFZlY3RvcjxpbnQ2NF90PiBmcm9tT2JqU3RvcmVJZHMsIHRvT2JqU3Rv
cmVJZHM7Ci0gICAgVmVjdG9yPFN0cmluZz4gZnJvbU9ialN0b3JlTmFtZXMsIHRvT2JqU3RvcmVO
YW1lczsKLSAgICBWZWN0b3I8U3RyaW5nPiBmcm9tS2V5UGF0aHMsIHRvS2V5UGF0aHM7Ci0gICAg
VmVjdG9yPGJvb2w+IGZyb21BdXRvSW5jcmVtZW50LCB0b0F1dG9JbmNyZW1lbnQ7Ci0KLSAgICAv
LyBNaWdyYXRlIG9iamVjdFN0b3Jlcy4gQ2hlY2sgdG8gc2VlIGlmIHRoZSBvYmplY3Qgc3RvcmUg
YWxyZWFkeSBleGlzdHMgaW4gdGhlIHRhcmdldC4KLSAgICBmcm9tQmFja2luZ1N0b3JlLT5nZXRP
YmplY3RTdG9yZXMoZnJvbURhdGFiYXNlSWQsIGZyb21PYmpTdG9yZUlkcywgZnJvbU9ialN0b3Jl
TmFtZXMsIGZyb21LZXlQYXRocywgZnJvbUF1dG9JbmNyZW1lbnQpOwotCi0gICAgdG9CYWNraW5n
U3RvcmUtPmdldE9iamVjdFN0b3Jlcyh0b0RhdGFiYXNlSWQsIHRvT2JqU3RvcmVJZHMsIHRvT2Jq
U3RvcmVOYW1lcywgdG9LZXlQYXRocywgdG9BdXRvSW5jcmVtZW50KTsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBmcm9tT2JqU3RvcmVJZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
aWYgKHRvT2JqU3RvcmVOYW1lcy5jb250YWlucyhmcm9tT2JqU3RvcmVOYW1lc1tpXSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpbnQ2NF90IGFzc2lnbmVkT2JqZWN0U3RvcmVJ
ZCA9IC0xOwotCi0gICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uPiB0
cmFucyA9IHRvQmFja2luZ1N0b3JlLT5jcmVhdGVUcmFuc2FjdGlvbigpOwotICAgICAgICB0cmFu
cy0+YmVnaW4oKTsKLQotICAgICAgICBpZiAoIXRvQmFja2luZ1N0b3JlLT5jcmVhdGVPYmplY3RT
dG9yZSh0b0RhdGFiYXNlSWQsIGZyb21PYmpTdG9yZU5hbWVzW2ldLCBmcm9tS2V5UGF0aHNbaV0s
IGZyb21BdXRvSW5jcmVtZW50W2ldLCBhc3NpZ25lZE9iamVjdFN0b3JlSWQpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU6OkN1cnNv
cj4gY3Vyc29yID0gZnJvbUJhY2tpbmdTdG9yZS0+b3Blbk9iamVjdFN0b3JlQ3Vyc29yKGZyb21E
YXRhYmFzZUlkLCBmcm9tT2JqU3RvcmVJZHNbaV0sIDAsIElEQkN1cnNvcjo6TkVYVCk7Ci0gICAg
ICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBSZWZQ
dHI8SURCS2V5PiBrZXkgPSBjdXJzb3ItPmtleSgpOwotICAgICAgICAgICAgICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU6Ok9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllcj4gcmVjb3JkSWRlbnRp
ZmllciA9IHRvQmFja2luZ1N0b3JlLT5jcmVhdGVJbnZhbGlkUmVjb3JkSWRlbnRpZmllcigpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKCF0b0JhY2tpbmdTdG9yZS0+cHV0T2JqZWN0U3RvcmVSZWNv
cmQodG9EYXRhYmFzZUlkLCBhc3NpZ25lZE9iamVjdFN0b3JlSWQsICooa2V5LmdldCgpKSwgY3Vy
c29yLT52YWx1ZSgpLCByZWNvcmRJZGVudGlmaWVyLmdldCgpKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICB9IHdoaWxlIChjdXJzb3ItPmNvbnRpbnVl
RnVuY3Rpb24oKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQb3B1bGF0ZSBhbnkvYWxsIGlu
ZGV4ZXMgZm9yIHRoaXMgb2JqZWN0c3RvcmUuCi0gICAgICAgIFZlY3RvcjxpbnQ2NF90PiBpZHhJ
ZHM7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGlkeE5hbWVzOwotICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBpZHhLZXlQYXRoczsKLSAgICAgICAgVmVjdG9yPGJvb2w+IGlkeFVuaXF1ZTsKLSAgICAg
ICAgZnJvbUJhY2tpbmdTdG9yZS0+Z2V0SW5kZXhlcyhmcm9tRGF0YWJhc2VJZCwgZnJvbU9ialN0
b3JlSWRzW2ldLCBpZHhJZHMsIGlkeE5hbWVzLCBpZHhLZXlQYXRocywgaWR4VW5pcXVlKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGlkeElkcy5zaXplKCk7IGorKykgewotICAg
ICAgICAgICAgaW50NjRfdCBpbmRleElkID0gLTE7Ci0KLSAgICAgICAgICAgIGlmICghdG9CYWNr
aW5nU3RvcmUtPmNyZWF0ZUluZGV4KHRvRGF0YWJhc2VJZCwgYXNzaWduZWRPYmplY3RTdG9yZUlk
LCBpZHhOYW1lc1tqXSwgaWR4S2V5UGF0aHNbal0sIGlkeFVuaXF1ZVtqXSwgaW5kZXhJZCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBpZiAoIUlEQk9iamVj
dFN0b3JlQmFja2VuZEltcGw6OnBvcHVsYXRlSW5kZXgoKnRvQmFja2luZ1N0b3JlLCB0b0RhdGFi
YXNlSWQsIGFzc2lnbmVkT2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgZnJvbUtleVBhdGhzW2ldKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB0cmFu
cy0+Y29tbWl0KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYgLy8gI2lm
IFVTRShMRVZFTERCKQotCi1ib29sIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6bWlncmF0ZUZyb21T
UUxpdGVUb0xldmVsREIoY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSkKLXsK
LSNpZiBVU0UoTEVWRUxEQikKLSAgICBTdHJpbmcgZnJvbVVuaXF1ZUlkZW50aWZpZXIgPSBjb21w
dXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9yaWdpbiwgU1FMaXRlQmFja2luZ1N0
b3JlKTsKLSAgICBTdHJpbmcgZnJvbUZpbGVJZGVudGlmaWVyID0gY29tcHV0ZUZpbGVJZGVudGlm
aWVyKHNlY3VyaXR5T3JpZ2luLCBTUUxpdGVCYWNraW5nU3RvcmUpOwotICAgIFN0cmluZyB0b1Vu
aXF1ZUlkZW50aWZpZXIgPSBjb21wdXRlVW5pcXVlSWRlbnRpZmllcihuYW1lLCBzZWN1cml0eU9y
aWdpbiwgTGV2ZWxEQkJhY2tpbmdTdG9yZSk7Ci0gICAgU3RyaW5nIHRvRmlsZUlkZW50aWZpZXIg
PSBjb21wdXRlRmlsZUlkZW50aWZpZXIoc2VjdXJpdHlPcmlnaW4sIExldmVsREJCYWNraW5nU3Rv
cmUpOwotICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiB0cmFuc2FjdGlvbkNv
b3JkaW5hdG9yID0gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKCk7Ci0gICAgUmVm
UHRyPElEQkJhY2tpbmdTdG9yZT4gZnJvbUJhY2tpbmdTdG9yZTsKLSAgICBSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW1wbD4gZnJvbURhdGFiYXNlQmFja2VuZDsKLSAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiB0b0JhY2tpbmdTdG9yZTsKLQotCi0gICAgLy8gT3BlbiAiRnJvbSIgYmFja2lu
ZyBzdG9yZSBhbmQgYmFja2VuZC4gV2hlbiBydW5uaW5nIExheW91dFRlc3RzLCB0aGUKLSAgICAv
LyAiZnJvbSIgZGF0YWJhc2UgbWF5IGJlIGNhY2hlZCBpbiB0aGlzIGNsYXNzIGluc3RhbmNlLCBz
byBsb29rIGZvciBpdCB0aGVyZSBmaXJzdC4KLSAgICBJREJCYWNraW5nU3RvcmVNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9iYWNraW5nU3RvcmVNYXAuZmluZChmcm9tRmlsZUlkZW50aWZpZXIpOwotICAg
IGlmIChpdCAhPSBtX2JhY2tpbmdTdG9yZU1hcC5lbmQoKSkKLSAgICAgICAgZnJvbUJhY2tpbmdT
dG9yZSA9IGl0LT5zZWNvbmQ7Ci0gICAgZWxzZQotICAgICAgICBmcm9tQmFja2luZ1N0b3JlID0g
SURCU1FMaXRlQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLCBkYXRhRGlyLCBtYXhp
bXVtU2l6ZSwgZnJvbUZpbGVJZGVudGlmaWVyLCB0aGlzKTsKLQotICAgIGlmICghZnJvbUJhY2tp
bmdTdG9yZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSURCRGF0YWJhc2VCYWNrZW5k
TWFwOjppdGVyYXRvciBpdDIgPSBtX2RhdGFiYXNlQmFja2VuZE1hcC5maW5kKGZyb21VbmlxdWVJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXQyICE9IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKQot
ICAgICAgICBmcm9tRGF0YWJhc2VCYWNrZW5kID0gaXQyLT5zZWNvbmQ7Ci0gICAgZWxzZSB7Ci0g
ICAgICAgIGZyb21EYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUobmFtZSwgZnJvbUJhY2tpbmdTdG9yZS5nZXQoKSwgdHJhbnNhY3Rpb25Db29yZGluYXRvci5n
ZXQoKSwgdGhpcywgZnJvbVVuaXF1ZUlkZW50aWZpZXIpOwotICAgICAgICBtX2RhdGFiYXNlQmFj
a2VuZE1hcC5zZXQoZnJvbVVuaXF1ZUlkZW50aWZpZXIsIGZyb21EYXRhYmFzZUJhY2tlbmQuZ2V0
KCkpOwotICAgIH0KLQotICAgIGlmICghZnJvbURhdGFiYXNlQmFja2VuZCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gT3BlbiAiVG8iIGRhdGFiYXNlLiBGaXJzdCBmaW5kIG91dCBp
ZiBpdCBhbHJlYWR5IGV4aXN0cyAtLSB0aGlzIHdpbGwgZGV0ZXJtaW5lIGlmCi0gICAgLy8gaXQg
aXMgc2FmZSB0byBjYWxsIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmV4dHJhY3RJREJEYXRhYmFz
ZU1ldGFEYXRhLgotICAgIGl0ID0gbV9iYWNraW5nU3RvcmVNYXAuZmluZCh0b0ZpbGVJZGVudGlm
aWVyKTsKLSAgICBpZiAoaXQgIT0gbV9iYWNraW5nU3RvcmVNYXAuZW5kKCkpCi0gICAgICAgIHRv
QmFja2luZ1N0b3JlID0gaXQtPnNlY29uZDsKLSAgICBlbHNlCi0gICAgICAgIHRvQmFja2luZ1N0
b3JlID0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3BlbihzZWN1cml0eU9yaWdpbiwgZGF0YURp
ciwgbWF4aW11bVNpemUsIHRvRmlsZUlkZW50aWZpZXIsIHRoaXMpOwotCi0gICAgaWYgKCF0b0Jh
Y2tpbmdTdG9yZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0KLSAgICBTdHJpbmcgdG9EYXRh
YmFzZU5hbWUgPSBmcm9tRGF0YWJhc2VCYWNrZW5kLT5uYW1lKCk7Ci0gICAgU3RyaW5nIHRvRGF0
YWJhc2VWZXJzaW9uID0gZnJvbURhdGFiYXNlQmFja2VuZC0+dmVyc2lvbigpOwotICAgIGludDY0
X3QgdG9EYXRhYmFzZUlkID0gLTE7Ci0KLSAgICBpZiAoIXRvQmFja2luZ1N0b3JlLT5leHRyYWN0
SURCRGF0YWJhc2VNZXRhRGF0YSh0b0RhdGFiYXNlTmFtZSwgdG9EYXRhYmFzZVZlcnNpb24sIHRv
RGF0YWJhc2VJZCkpIHsKLSAgICAgICAgaWYgKCF0b0JhY2tpbmdTdG9yZS0+c2V0SURCRGF0YWJh
c2VNZXRhRGF0YSh0b0RhdGFiYXNlTmFtZSwgdG9EYXRhYmFzZVZlcnNpb24sIHRvRGF0YWJhc2VJ
ZCwgdHJ1ZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG1pZ3JhdGVPYmplY3RTdG9yZXMoZnJvbUJhY2tpbmdTdG9yZSwgZnJvbURhdGFiYXNlQmFja2Vu
ZC0+aWQoKSwgdG9CYWNraW5nU3RvcmUsIHRvRGF0YWJhc2VJZCk7Ci0KLSNlbmRpZiAvLyBVU0Uo
TEVWRUxEQikKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggYjcwNGQ5ODgxZmU1YWMzNDU4
OWYxMDg3Y2U3MTBkNmMyMDJkM2ZjMC4uYjgyZGJiNmQ0Njg2ODlhZTBjNmQ1NjBiZmNjNThiMGYw
YmZlMmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFj
a2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5k
SW1wbC5oCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURCRmFjdG9y
eUJhY2tlbmRJbXBsKCk7CiAgICAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IG9wZW5CYWNr
aW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4sIGNvbnN0IFN0cmluZyYgZGF0YURp
ciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7Ci0gICAgYm9vbCBtaWdy
YXRlRnJvbVNRTGl0ZVRvTGV2ZWxEQihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgU3RyaW5nJiBkYXRhRGlyLCBpbnQ2NF90IG1heGltdW1TaXplKTsKIAogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIElEQkRhdGFiYXNlQmFja2VuZEltcGwqPiBJREJEYXRhYmFz
ZUJhY2tlbmRNYXA7CiAgICAgSURCRGF0YWJhc2VCYWNrZW5kTWFwIG1fZGF0YWJhc2VCYWNrZW5k
TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNzRlNmU0ZjkzODg3ZDEyYzJlYWMw
ODAzMjRkM2ZlNzEwMTlmMWVlLi44ZjYwMjYxNWMwMDFmMWE3NzI2NzFiZTZhNTEzMTE0MzUxOWUy
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEw
LTAzICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBSZW1vdmUgU1FMaXRlLUxldmVsREIgbWlncmF0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5MjY0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHNldE92ZXJyaWRlQmFja2lu
Z1N0b3JlVHlwZS4gSXQgd2FzIHVzZWQgaW4gdGhlIGxheW91dCB0ZXN0CisgICAgICAgIGZvciBt
aWdyYXRpb24uCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSURCRmFjdG9yeS5oOgorICAgICAgICAq
IHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3Rv
cnlJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9y
eUltcGw6Om9wZW4pOgorCiAyMDExLTEwLTAyICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgV2ViV2lkZ2V0IEFQSSBmb3IgYWNj
ZXNzaW5nIHRoZSBjdXJyZW50IFdlYkNvbXBvc2l0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklEQkZhY3RvcnkuaAppbmRleCA5YzY1ZjJkZTNlMmVjNzJhM2Y3MGVhZDBj
NTgyZmNlZGUxYTQ1MmE0Li5mYmQxNzU1NzI4ZmZiMWIxZjljYTYxNDQ4MGJlYzZlNjYzY2FjM2U1
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCkBA
IC02Myw5ICs2Myw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgb3Blbihjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwg
V2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBt
YXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVE
KCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJh
bWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0KLSAgICAvLyBVc2VkIGZvciBEdW1wUmVuZGVyVHJlZSB0ZXN0cy4KLSAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE92ZXJyaWRlQmFja2luZ1N0b3JlVHlwZShCYWNraW5n
U3RvcmVUeXBlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCmluZGV4IDQwYmVjMGRjNTQ1
NjNlYzc0M2EzNTM4OGY0Mzg1OTA4NTFlYThlMjYuLjJlMmFlYWMzYjg2ZjgwYTdkMjRiNzc1OWQy
NmJmMDdiNzEwYmRmYjkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkZhY3RvcnlJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJGYWN0b3J5SW1wbC5jcHAKQEAgLTQ0LDE4ICs0NCwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBXZWJJREJGYWN0b3J5OjpCYWNr
aW5nU3RvcmVUeXBlIG92ZXJyaWRkZW5CYWNraW5nU3RvcmVUeXBlID0gV2ViSURCRmFjdG9yeTo6
RGVmYXVsdEJhY2tpbmdTdG9yZTsKLQogV2ViSURCRmFjdG9yeSogV2ViSURCRmFjdG9yeTo6Y3Jl
YXRlKCkKIHsKICAgICByZXR1cm4gbmV3IFdlYklEQkZhY3RvcnlJbXBsKCk7CiB9CiAKLXZvaWQg
V2ViSURCRmFjdG9yeTo6c2V0T3ZlcnJpZGVCYWNraW5nU3RvcmVUeXBlKEJhY2tpbmdTdG9yZVR5
cGUgdHlwZSkKLXsKLSAgICBvdmVycmlkZGVuQmFja2luZ1N0b3JlVHlwZSA9IHR5cGU7Ci19Ci0K
IFdlYklEQkZhY3RvcnlJbXBsOjpXZWJJREJGYWN0b3J5SW1wbCgpCiAgICAgOiBtX2lkYkZhY3Rv
cnlCYWNrZW5kKElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6Y3JlYXRlKCkpCiB7CkBAIC02OSwxMSAr
NjIsNiBAQCB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNh
bGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZQogewogICAgIFdlYlN0cmluZyBwYXRoID0g
ZGF0YURpcjsKIAotICAgIGlmIChvdmVycmlkZGVuQmFja2luZ1N0b3JlVHlwZSAhPSBEZWZhdWx0
QmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIC8vIEJhY2tpbmcgc3RvcmUgdHlwZSBvdmVycmlkZGVu
IGJ5IExheW91dFRlc3RDb250cm9sbGVyLgotICAgICAgICBiYWNraW5nU3RvcmVUeXBlID0gb3Zl
cnJpZGRlbkJhY2tpbmdTdG9yZVR5cGU7Ci0gICAgfQotCiAgICAgaWYgKGJhY2tpbmdTdG9yZVR5
cGUgPT0gRGVmYXVsdEJhY2tpbmdTdG9yZSkKICAgICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IExl
dmVsREJCYWNraW5nU3RvcmU7CiAKQEAgLTg1LDExICs3Myw2IEBAIHZvaWQgV2ViSURCRmFjdG9y
eUltcGw6Om9wZW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxi
YWNrcywKIHsKICAgICBXZWJTdHJpbmcgcGF0aCA9IGRhdGFEaXI7CiAKLSAgICBpZiAob3ZlcnJp
ZGRlbkJhY2tpbmdTdG9yZVR5cGUgIT0gRGVmYXVsdEJhY2tpbmdTdG9yZSkgewotICAgICAgICAv
LyBCYWNraW5nIHN0b3JlIHR5cGUgb3ZlcnJpZGRlbiBieSBMYXlvdXRUZXN0Q29udHJvbGxlci4K
LSAgICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IG92ZXJyaWRkZW5CYWNraW5nU3RvcmVUeXBlOwot
ICAgIH0KLQogICAgIGlmIChiYWNraW5nU3RvcmVUeXBlID09IERlZmF1bHRCYWNraW5nU3RvcmUp
CiAgICAgICAgIGJhY2tpbmdTdG9yZVR5cGUgPSBMZXZlbERCQmFja2luZ1N0b3JlOwogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjBjYjQyN2Mx
NTlhYmZlZmRiYzg2ODBhY2ExNTVmNWVmN2QzMjQzZS4uYThmYjQyMjI5YWMxNTA0YmNhZTZhODk4
ODFhYjM1NjQ3M2EyMmE5NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTEwLTAzICBIYW5zIFdlbm5ib3JnICA8
aGFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBSZW1vdmUgU1FMaXRlLUxl
dmVsREIgbWlncmF0aW9uIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY5MjY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlIHNldE92ZXJyaWRlSW5kZXhlZERCQmFja2luZ1N0b3JlLiBJdCB3
YXMgdXNlZCBpbiB0aGUgbGF5b3V0CisgICAgICAgIHRlc3QgZm9yIG1pZ3JhdGlvbi4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KwogMjAxMS0xMC0wMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IENsZWFuIHVwIG9ic29sZXRlIGNvZGUgaW4gZ2FyZGVuaW5nc2VydmVyLnB5IHJlbGF0ZWQgdG8K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAppbmRleCAwYTJjZThkZDcxZGMwNDFlMDk3MDVjYWMwYTdhZjdiNWQ4MTU2NTU1
Li5mNzZmYjlkYzQ3NzMzOTM1NDlkYmViY2QxNWYzNjczZmI5M2NjODU1IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC0xNzAsNyArMTcwLDYgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwpCiAgICAgYmluZE1ldGhvZCgic2V0TW9ja0RldmljZU9y
aWVudGF0aW9uIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRp
b24pOwogICAgIGJpbmRNZXRob2QoInNldE1vY2tHZW9sb2NhdGlvbkVycm9yIiwgJkxheW91dFRl
c3RDb250cm9sbGVyOjpzZXRNb2NrR2VvbG9jYXRpb25FcnJvcik7CiAgICAgYmluZE1ldGhvZCgi
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24iLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE1v
Y2tHZW9sb2NhdGlvblBvc2l0aW9uKTsKLSAgICBiaW5kTWV0aG9kKCJzZXRPdmVycmlkZUluZGV4
ZWREQkJhY2tpbmdTdG9yZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0T3ZlcnJpZGVJbmRl
eGVkREJCYWNraW5nU3RvcmUpOwogICAgIGJpbmRNZXRob2QoInNldFBhZ2VWaXNpYmlsaXR5Iiwg
JkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRQYWdlVmlzaWJpbGl0eSk7CiAgICAgYmluZE1ldGhv
ZCgic2V0UGx1Z2luc0VuYWJsZWQiLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBsdWdpbnNF
bmFibGVkKTsKICAgICBiaW5kTWV0aG9kKCJzZXRQb3B1cEJsb2NraW5nRW5hYmxlZCIsICZMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQpOwpAQCAtMTExMywyMiAr
MTExMiw2IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEljb25EYXRhYmFzZUVuYWJs
ZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7
CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldE92ZXJyaWRlSW5kZXhlZERCQmFj
a2luZ1N0b3JlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpYW50KiBy
ZXN1bHQpCi17Ci0gICAgcmVzdWx0LT5zZXROdWxsKCk7Ci0jaWYgRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCi0gICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPCAxIHx8ICFhcmd1bWVudHNbMF0uaXNT
dHJpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHN0cmluZyBuYW1lID0gYXJndW1lbnRzWzBd
LnRvU3RyaW5nKCk7Ci0gICAgaWYgKG5hbWUgPT0gImRlZmF1bHQiKQotICAgICAgICBXZWJJREJG
YWN0b3J5OjpzZXRPdmVycmlkZUJhY2tpbmdTdG9yZVR5cGUoV2ViSURCRmFjdG9yeTo6RGVmYXVs
dEJhY2tpbmdTdG9yZSk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSAic3FsaXRlIikKLSAgICAgICAg
V2ViSURCRmFjdG9yeTo6c2V0T3ZlcnJpZGVCYWNraW5nU3RvcmVUeXBlKFdlYklEQkZhY3Rvcnk6
OlNRTGl0ZUJhY2tpbmdTdG9yZSk7Ci0gICAgZWxzZSBpZiAobmFtZSA9PSAibGV2ZWxkYiIpCi0g
ICAgICAgIFdlYklEQkZhY3Rvcnk6OnNldE92ZXJyaWRlQmFja2luZ1N0b3JlVHlwZShXZWJJREJG
YWN0b3J5OjpMZXZlbERCQmFja2luZ1N0b3JlKTsKLSNlbmRpZgotfQotCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewogICAgIHJlc3VsdC0+c2V0KG1fc2hlbGwtPndl
YlZpZXcoKS0+ZGlzcGF0Y2hCZWZvcmVVbmxvYWRFdmVudCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDVmMWY4
MTM1NTZmZGNmZWEyMTA5MGRhZWU2YmFiMjQ1ZjM5MDU1ZWUuLmQxMmRmYWNjZWNkNDNmMjExYWQy
NDY2ZGI3ZTQ5OTNjMWFmMDQ1YjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzE1LDggKzMxNSw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyQWxsRGF0YWJhc2VzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICAvLyBTZXRzIHRoZSBkZWZhdWx0IHF1b3RhIGZvciBhbGwgb3JpZ2lu
cwogICAgIHZvaWQgc2V0RGF0YWJhc2VRdW90YShjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50Kik7Ci0gICAgLy8gT3ZlcnJpZGVzIHRoZSBiYWNrZW5kIGZvciBJbmRleGVkREIKLSAg
ICB2b2lkIHNldE92ZXJyaWRlSW5kZXhlZERCQmFja2luZ1N0b3JlKGNvbnN0IENwcEFyZ3VtZW50
TGlzdCYsIENwcFZhcmlhbnQqKTsKIAogICAgIC8vIENhbGxzIHNldGxvY2FsZShMQ19BTEwsIC4u
LikgZm9yIGEgc3BlY2lmaWVkIGxvY2FsZS4KICAgICAvLyBSZXNldHMgYmV0d2VlbiB0ZXN0cy4K
</data>
<flag name="review"
          id="106738"
          type_id="1"
          status="+"
          setter="tony"
    />
    <flag name="commit-queue"
          id="107271"
          type_id="3"
          status="+"
          setter="hans"
    />
          </attachment>
      

    </bug>

</bugzilla>