<?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>90627</bug_id>
          
          <creation_ts>2012-07-05 12:28:27 -0700</creation_ts>
          <short_desc>WKContext should ask for its injected bundle initialization user data when it needs it so the client doesn&apos;t have to keep it up to date</short_desc>
          <delta_ts>2012-07-06 09:38:09 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jessie Berlin">jberlin</reporter>
          <assigned_to name="Jessie Berlin">jberlin</assigned_to>
          <cc>andersca</cc>
    
    <cc>jberlin</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663680</commentid>
    <comment_count>0</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-07-05 12:28:27 -0700</bug_when>
    <thetext>In the case where there is a lot of initialization data that changes very often based on changes in the InjectedBundleClient, it makes more sense for WKContext to ask for the initialization data only when it needs it.

&lt;rdar://problem/11743726&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663695</commentid>
    <comment_count>1</comment_count>
      <attachid>150975</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-07-05 12:58:23 -0700</bug_when>
    <thetext>Created attachment 150975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664140</commentid>
    <comment_count>2</comment_count>
      <attachid>150975</attachid>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-07-06 09:38:02 -0700</bug_when>
    <thetext>Comment on attachment 150975
Patch

Committed in http://trac.webkit.org/changeset/121979</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150975</attachid>
            <date>2012-07-05 12:58:23 -0700</date>
            <delta_ts>2012-07-06 09:38:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90627.patch</filename>
            <type>text/plain</type>
            <size>35091</size>
            <attacher name="Jessie Berlin">jberlin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDQyMjQ1YmQuLjY2M2RhMzQgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEy
LTA3LTA1ICBKZXNzaWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tD
b250ZXh0IHNob3VsZCBhc2sgZm9yIGl0cyBpbmplY3RlZCBidW5kbGUgaW5pdGlhbGl6YXRpb24g
dXNlciBkYXRhIHdoZW4gaXQgbmVlZHMgaXQgc28gdGhlCisgICAgICAgIGNsaWVudCBkb2Vzbid0
IGhhdmUgdG8ga2VlcCBpdCB1cCB0byBkYXRlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGEgY2FsbGJhY2sgdG8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuCisKKyAg
ICAgICAgKiBTaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcDoKKyAgICAgICAgQWxsb3cgdGhlIFdL
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IEFQSSB0byBiZSB2ZXJzaW9uZWQuCisgICAgICAg
ICogU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oOgorICAgICAgICBBZGQgdGhlIGNhbGxiYWNrIGFuZCBidW1wIHRoZSB2ZXJz
aW9uIG9mIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjplbnN1cmVX
ZWJQcm9jZXNzKToKKyAgICAgICAgUHJlZmVyIGFueSB1c2VyIGRhdGEgcmV0dXJuZWQgd2hlbiB0
aGUgY2FsbGJhY2sgaXMgaW52b2tlZCBvdmVyIHRoYXQgc2V0IHdpdGgKKyAgICAgICAgV0tDb250
ZXh0U2V0SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUZvckluamVjdGVkQnVuZGxlLgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6Z2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhKToKKyAgICAgICAgSW52b2tlIHRoZSBjYWxsYmFjayBp
ZiB0aGUgY2xpZW50IGhhcyByZWdpc3RlcmVkIGZvciBpdC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg6CisKIDIwMTItMDctMDMgIEplc3NpZSBC
ZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb250ZXh0OjppbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoKSBpcyB1bnVzZWQsIHNob3VsZCBiZSByZW1v
dmVkCmRpZmYgLS1naXQgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAg
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSUNsaWVudFRyYWl0cy5jcHAKaW5kZXggZWFhNzMwNi4u
MTkyNmJlOCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElDbGllbnRUcmFpdHMu
Y3BwCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmNwcApAQCAtNjgs
NCArNjgsOSBAQCBjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUZvcm1D
bGllbnQ+OjppbnRlcmZhY2VTaXplc0J5VmVyc2lvbltdCiAgICAgc2l6ZW9mKFdLQnVuZGxlUGFn
ZUZvcm1DbGllbnQpCiB9OwogCitjb25zdCBzaXplX3QgQVBJQ2xpZW50VHJhaXRzPFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50Pjo6aW50ZXJmYWNlU2l6ZXNCeVZlcnNpb25bXSA9IHsKKyAg
ICBvZmZzZXRvZihXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudCwgZ2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhKSwKKyAgICBzaXplb2YoV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQpCit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmggU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSUNsaWVudFRyYWl0cy5oCmluZGV4IDhjMWIxNjQuLmQyMTgwNzggMTAwNjQ0Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJQ2xpZW50VHJhaXRzLmgKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUElDbGllbnRUcmFpdHMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBBUElDbGll
bnRUcmFpdHNfaAogCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiV0tDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjQs
NiArNjUsMTAgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFn
ZUZvcm1DbGllbnQ+IHsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGludGVyZmFjZVNpemVzQnlW
ZXJzaW9uWzJdOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQVBJQ2xpZW50VHJhaXRzPFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50PiB7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbnRl
cmZhY2VTaXplc0J5VmVyc2lvblsyXTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAj
ZW5kaWYgLy8gQVBJQ2xpZW50VHJhaXRzX2gKZGlmZiAtLWdpdCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oCmluZGV4IGY0Mjk5ZGEuLjk1NzU3NmMgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaApAQCAtNDIsMTYgKzQyLDIyIEBAIHR5cGVkZWYgdWludDMyX3Qg
V0tDYWNoZU1vZGVsOwogLy8gSW5qZWN0ZWQgQnVuZGxlIENsaWVudAogdHlwZWRlZiB2b2lkICgq
V0tDb250ZXh0RGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGVDYWxsYmFjaykoV0tD
b250ZXh0UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0
RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZUNhbGxiYWNrKShX
S0NvbnRleHRSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keSwgV0tUeXBlUmVmKiByZXR1cm5EYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
K3R5cGVkZWYgV0tUeXBlUmVmICgqV0tDb250ZXh0R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIAogc3RydWN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IHsKICAg
ICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZlcnNpb247CiAgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworCisgICAg
Ly8gVmVyc2lvbiAwLgogICAgIFdLQ29udGV4dERpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlQ2FsbGJhY2sgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZWRCdW5kbGU7CiAgICAgV0tDb250ZXh0RGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZUNhbGxiYWNrICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlOworCisgICAgLy8gVmVyc2lvbiAxLgorICAgIFdLQ29udGV4dEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrICAgICAgICAgICAgZ2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhOwogfTsKIHR5cGVkZWYgc3RydWN0
IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50OwogCi1lbnVtIHsga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNp
b24gPSAwIH07CitlbnVtIHsga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVudFZl
cnNpb24gPSAxIH07CiAKIC8vIEhpc3RvcnkgQ2xpZW50CiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRl
eHREaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkRhdGFSZWYgbmF2aWdhdGlvbkRhdGEs
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpkaWZmIC0tZ2l0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZDUzZGM3Ni4uNWE3MTRlOCAxMDA2NDQKLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC0zMDYsNyArMzA2LDEwIEBAIHZvaWQgV2ViQ29u
dGV4dDo6ZW5zdXJlV2ViUHJvY2VzcygpCiAgICAgLy8gQWRkIGFueSBwbGF0Zm9ybSBzcGVjaWZp
YyBwYXJhbWV0ZXJzCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJz
KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6SW5pdGlhbGl6
ZVdlYlByb2Nlc3MocGFyYW1ldGVycywgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlcihtX2lu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YS5nZXQoKSkpLCAwKTsKKyAgICBSZWZQ
dHI8QVBJT2JqZWN0PiBpbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBtX2lu
amVjdGVkQnVuZGxlQ2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YSh0aGlzKTsKKyAgICBpZiAoIWluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkK
KyAgICAgICAgaW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gbV9pbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGE7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpJbml0aWFsaXplV2ViUHJvY2VzcyhwYXJhbWV0ZXJzLCBXZWJDb250
ZXh0VXNlck1lc3NhZ2VFbmNvZGVyKGluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YS5nZXQoKSkpLCAwKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IG1fcGVuZGluZ01l
c3NhZ2VzVG9Qb3N0VG9JbmplY3RlZEJ1bmRsZS5zaXplKCk7ICsraSkgewogICAgICAgICBwYWly
PFN0cmluZywgUmVmUHRyPEFQSU9iamVjdD4gPiYgbWVzc2FnZSA9IG1fcGVuZGluZ01lc3NhZ2Vz
VG9Qb3N0VG9JbmplY3RlZEJ1bmRsZVtpXTsKZGlmZiAtLWdpdCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCAyNGU2Mjcx
Li44MjUzODhiIDEwMDY0NAotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC01MSw0ICs1MSwxMiBAQCB2b2lkIFdl
YkNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudDo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bgogICAgIHJldHVybkRhdGEgPSBhZG9wdFJlZih0b0ltcGwocmV0dXJu
RGF0YVJlZikpOwogfQogCitQYXNzUmVmUHRyPEFQSU9iamVjdD4gV2ViQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50OjpnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2Vi
Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmdldEluamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
dG9JbXBsKG1fY2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSh0
b0FQSShjb250ZXh0KSwgbV9jbGllbnQuY2xpZW50SW5mbykpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50LmggU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudC5oCmluZGV4IDJiNmNlOGQuLmQ2YjI3NGUgMTAwNjQ0Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmgK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBXZWJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQgOiBwdWJsaWMgQVBJQ2xpZW50PFdLQ29udGV4dEluamVjdGVkQnVuZGxlQwogcHVibGljOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV2ViQ29udGV4dCos
IGNvbnN0IFN0cmluZyYsIEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNocm9u
b3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXZWJDb250ZXh0KiwgY29uc3QgU3RyaW5nJiwg
QVBJT2JqZWN0KiwgUmVmUHRyPEFQSU9iamVjdD4mIHJldHVybkRhdGEpOworICAgIFBhc3NSZWZQ
dHI8QVBJT2JqZWN0PiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV2Vi
Q29udGV4dCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgVG9vbHMv
Q2hhbmdlTG9nIFRvb2xzL0NoYW5nZUxvZwppbmRleCBjYzc0ZTU4Li5kYmIyY2YyIDEwMDY0NAot
LS0gVG9vbHMvQ2hhbmdlTG9nCisrKyBUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAor
MjAxMi0wNy0wNSAgSmVzc2llIEJlcmxpbiAgPGpiZXJsaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFdLQ29udGV4dCBzaG91bGQgYXNrIGZvciBpdHMgaW5pdGlhbGl6YXRpb24gZGF0YSB3aGVuIGl0
IG5lZWRzIGl0IHNvIHRoZSBjbGllbnQgZG9lc24ndCBoYXZlCisgICAgICAgIHRvIGtlZXAgaXQg
dXAgdG8gZGF0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwNjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHRlc3RzIGFuZCB1cGRhdGUgb3RoZXIgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnRzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAg
ICgtW0Jyb3dzZXJBcHBEZWxlZ2F0ZSBpbml0XSk6CisgICAgICAgIFVwZGF0ZWQgZm9yIHRoZSBj
aGFuZ2UgdG8gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjppbml0aWFsaXplKToKKyAgICAgICAgRGl0dG8uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6
OmNyZWF0ZUluaXRpYWxpemF0aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdCk6Cisg
ICAgICAgIE1vdmVkIHRoZSBsb2dpYyB0byBjcmVhdGUgdGhlIGluaXRpYWxpemF0aW9uIGRpY3Rp
b25hcnkgaGVyZSAuLi4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QpOgorICAgICAgICAuLi4gZnJvbSBoZXJlIHNvIHRoYXQg
aXQgY2FuIGJlIHVzZWQgd2l0aG91dCBhdXRvbWF0aWNhbGx5IHVzaW5nCisgICAgICAgIFdLQ29u
dGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZS4KKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmg6CisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIHRoZSBuZXcgdGVzdCBmaWxlcy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0dOVW1ha2Vm
aWxlLmFtOgorICAgICAgICBEaXR0by4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5j
cHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICBDaGVjayB0aGF0IHRoZSBtZXNzYWdlIHJlY2VpdmVk
IGZyb20gdGhlIGluamVjdGVkIGJ1bmRsZSBtYXRjaGVzIHRoZSB1c2VyIGRhdGEgaXQgd2FzCisg
ICAgICAgIGluaXRpYWxpemVkIHdpdGguCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEpOgorICAgICAgICBSZXR1cm4gdGhlIHVz
ZXIgZGF0YSB0aGF0IHRoZSBpbmplY3RlZCBidW5kbGUgc2hvdWxkIGJlIGluaXRpYWxpemVkIHdp
dGguCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgU2V0IHVwIFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IGFuZCBsb2FkIGEgcGFnZS4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3Q6Omlu
aXRpYWxpemUpOgorICAgICAgICBTZW5kIHRoZSBpbml0aWFsaXphdGlvbiB1c2VyIGRhdGEgYmFj
ayB1cCB0byB0aGUgVUkgUHJvY2Vzcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgQ2hlY2sgdGhhdCB0aGUgbWVzc2FnZSByZWNlaXZl
ZCBmcm9tIHRoZSBpbmplY3RlZCBidW5kbGUgbWF0Y2hlcyB0aGUgdXNlciBkYXRhIGl0IHdhcwor
ICAgICAgICBpbml0aWFsaXplZCB3aXRoIGluIHRoZSBjYWxsYmFjay4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk6CisgICAg
ICAgIFJldHVybiB0aGUgdXNlciBkYXRhIHRoYXQgdGhlIGluamVjdGVkIGJ1bmRsZSBzaG91bGQg
YmUgaW5pdGlhbGl6ZWQgd2l0aC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICBTZXQgdXAgdGhlIGNvbnRleHQgYW5kIHVzZSBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlv
blVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUgdG8gc2V0IHRoZQorICAgICAgICBpbml0aWFsaXph
dGlvbiB1c2VyIGRhdGEgKHdoaWNoIHNob3VsZCBiZSBvdmVycmlkZGVuIGJ5IHRoZSB1c2VyIGRh
dGEgcmV0dXJuZWQgaW4KKyAgICAgICAgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhKS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zX0J1bmRsZS5jcHA6IEFkZGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhQ2FsbGJhY2tXaW5zVGVzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIFNlbmQgdGhlIGlu
aXRpYWxpemF0aW9uIHVzZXIgZGF0YSBiYWNrIHVwIHRvIHRoZSBVSSBQcm9jZXNzLgorCiAyMDEy
LTA3LTAzICBUb3IgQXJuZSBWZXN0YsO4ICA8dG9yLmFybmUudmVzdGJvQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIE1ha2UgdXNlIG9mIC5xbWFrZS5jYWNoZSBmb3IgY2FjaGluZyBmZWF0dXJl
cwpkaWZmIC0tZ2l0IFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tIFRvb2xzL01p
bmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCmluZGV4IDAzYTc1MTEuLmM4ZDdmOGQgMTAwNjQ0
Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysgVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTE0MSw3ICsxNDEsOCBAQCAtIChpZClpbml0CiAg
ICAgICAgICAgICBrV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRDdXJyZW50VmVyc2lvbiwK
ICAgICAgICAgICAgIDAsICAgICAgLyogY2xpZW50SW5mbyAqLwogICAgICAgICAgICAgZGlkUmVj
aWV2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUsCi0gICAgICAgICAgICAwCisgICAgICAgICAg
ICAwLCAgICAgIC8qIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5k
bGUgKi8KKyAgICAgICAgICAgIDAgICAgICAgLyogZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhICovCiAgICAgICAgIH07CiAgICAgICAgIFdLQ29udGV4dFNldEluamVjdGVk
QnVuZGxlQ2xpZW50KF9wcm9jZXNzQ29udGV4dCwgJmJ1bmRsZUNsaWVudCk7CiAgICAgICAgIFdL
Q29udGV4dFNldEhpc3RvcnlDbGllbnQoX3Byb2Nlc3NDb250ZXh0LCAmaGlzdG9yeUNsaWVudCk7
CmRpZmYgLS1naXQgVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBUb29scy9UZXN0
V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCmluZGV4IDcwNDU2YWIuLmY3OTU3NDMgMTAwNjQ0Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0xMjUsOCArMTI1LDEwIEBAIFByb2dyYW1zX1Rlc3RXZWJL
aXRBUElfVGVzdFdlYktpdDJfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRm9yY2VSZXBhaW50LmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0ZyYW1lTUlNRVR5cGVIVE1MLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwIFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJh
Y2suY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3Vs
dE5vZGVIYW5kbGUuY3BwIFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5q
ZWN0ZWRCdW5kbGVCYXNpYy5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwIFwK
IAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZEFsdGVybmF0ZUhUTUxTdHJp
bmdXaXRoTm9uRGlyZWN0b3J5VVJMLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0xvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFjay5jcHAgXAogCVRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcCBcCkBA
IC0xNjUsOCArMTY3LDEwIEBAIExpYnJhcmllc19saWJUZXN0V2ViS2l0QVBJSW5qZWN0ZWRCdW5k
bGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9j
dW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3Bw
IFwKIAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZV9CdW5kbGUuY3BwIFwKKwlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNw
cCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRlc3RSZXN1bHROb2Rl
SGFuZGxlX0J1bmRsZS5jcHAgXAogCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9J
bmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAgXAorCVRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dp
bnNfQnVuZGxlLmNwcCBcCiAJVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0xvYWRD
YW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUuY3BwIFwKIAlUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIFwK
IAlUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0X0J1bmRsZS5jcHAgXApkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
Y3BwCmluZGV4IGVjMjBkYzEuLjFkZWQyYTkgMTAwNjQ0Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtVXRpbGl0aWVzLmNwcAorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0
aWxpdGllcy5jcHAKQEAgLTQwLDIwICs0MCwyNSBAQCBXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4
dFdpdGhJbmplY3RlZEJ1bmRsZSgpCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVdLQ29udGV4
dFJlZiBjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5n
JiB0ZXN0TmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQorV0tEaWN0aW9uYXJ5UmVmIGNyZWF0ZUlu
aXRpYWxpemF0aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0
cmluZyYgdGVzdE5hbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKIHsKLSAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gaW5qZWN0ZWRCdW5kbGVQYXRoKEFkb3B0V0ssIGNyZWF0ZUluamVjdGVkQnVu
ZGxlUGF0aCgpKTsKLSAgICBXS0NvbnRleHRSZWYgY29udGV4dCA9IFdLQ29udGV4dENyZWF0ZVdp
dGhJbmplY3RlZEJ1bmRsZVBhdGgoaW5qZWN0ZWRCdW5kbGVQYXRoLmdldCgpKTsKKyAgICBXS011
dGFibGVEaWN0aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSA9IFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKTsKIAotICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IGluaXRpYWxpemF0aW9uRGljdGlvbmFyeShBZG9wdFdLLCBXS011dGFibGVEaWN0aW9uYXJ5
Q3JlYXRlKCkpOwotICAgIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXN0TmFtZUtl
eShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVzdE5hbWUiKSk7CiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRlc3ROYW1lU3RyaW5nKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRlc3ROYW1lLmNfc3RyKCkpKTsKLSAgICBXS0RpY3Rp
b25hcnlBZGRJdGVtKGluaXRpYWxpemF0aW9uRGljdGlvbmFyeS5nZXQoKSwgdGVzdE5hbWVLZXku
Z2V0KCksIHRlc3ROYW1lU3RyaW5nLmdldCgpKTsKKyAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGlu
aXRpYWxpemF0aW9uRGljdGlvbmFyeSwgdGVzdE5hbWVLZXkuZ2V0KCksIHRlc3ROYW1lU3RyaW5n
LmdldCgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB1c2VyRGF0YUtleShBZG9w
dFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVXNlckRhdGEiKSk7Ci0gICAgV0tE
aWN0aW9uYXJ5QWRkSXRlbShpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkuZ2V0KCksIHVzZXJEYXRh
S2V5LmdldCgpLCB1c2VyRGF0YSk7CisgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShpbml0aWFsaXph
dGlvbkRpY3Rpb25hcnksIHVzZXJEYXRhS2V5LmdldCgpLCB1c2VyRGF0YSk7CisKKyAgICByZXR1
cm4gaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5OworfQorCitXS0NvbnRleHRSZWYgY3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdE5hbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSkKK3sKKyAgICBXS0NvbnRleHRSZWYgY29udGV4dCA9IGNyZWF0ZUNv
bnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKTsKIAorICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFy
eVJlZj4gaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5KEFkb3B0V0ssIGNyZWF0ZUluaXRpYWxpemF0
aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdCh0ZXN0TmFtZSwgdXNlckRhdGEpKTsK
ICAgICBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUo
Y29udGV4dCwgaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIHJldHVybiBj
b250ZXh0OwpkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
aCBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKaW5kZXggYzNlYTIxZS4u
MTBkYTg0ZCAxMDA2NDQKLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
aAorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCkBAIC01MSw2ICs1
MSw3IEBAIHZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMpOwogCiBXS0NvbnRleHRSZWYgY3JlYXRl
Q29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpOwogV0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmLCBXS1R5cGVSZWYgdXNlckRh
dGEgPSAwKTsKK1dLRGljdGlvbmFyeVJlZiBjcmVhdGVJbml0aWFsaXphdGlvbkRpY3Rpb25hcnlG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmLCBXS1R5cGVSZWYgdXNlckRh
dGEpOwogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKTsKIFdLVVJMUmVm
IGNyZWF0ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBl
eHRlbnNpb24pOwpkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3NWEyMDcuLjJkZjkxZDkgMTAwNjQ0
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE1Miw2ICsxNTIsMTAgQEAKIAkJRTEyMjBEQ0ExNTVCMjhBQTAw
MTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgKi87IH07CiAJCUU0OTAyOTY4MTRFMkUzQTQwMDJCRUREMSAv
KiBUeXBpbmdTdHlsZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ5MDI5NjcxNEUyRTNBNDAwMkJFREQxIC8qIFR5cGluZ1N0eWxlQ3Jhc2gu
bW0gKi87IH07CiAJCUYzRkMzRUUzMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNGQzNFRTIxMzY3
OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi87IH07CisJCUY2NjBBQTBEMTVBNUYwNjEwMDNB
MTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUEw
QzE1QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhQ2FsbGJhY2suY3BwICovOyB9OworCQlGNjYwQUExMTE1QTVGNjMxMDAzQTEyNDMgLyogR2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTBGMTVB
NUY2MjQwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFD
YWxsYmFja19CdW5kbGUuY3BwICovOyB9OworCQlGNjYwQUExMzE1QTYxOUM5MDAzQTEyNDMgLyog
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2NjBBQTEyMTVBNjE5
QzgwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFj
a1dpbnMuY3BwICovOyB9OworCQlGNjYwQUExNTE1QTYxQUJGMDAzQTEyNDMgLyogSW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zX0J1bmRsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjYwQUExNDE1QTYxQUJG
MDAzQTEyNDMgLyogSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tX
aW5zX0J1bmRsZS5jcHAgKi87IH07CiAJCUY2RjNGMjkxMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29r
aWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY2RjNGMjkwMTMzNDJGRUIwMEE2QkYxOSAvKiBDb29raWVNYW5hZ2VyLmNwcCAqLzsgfTsK
IAkJRjZGNDlDNjkxNTU0NUM4RTAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjZGNDlD
NjcxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwICovOyB9
OwogCQlGNkY0OUM2QjE1NTQ1Q0E3MDAwN0YzOUQgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNo
ZV9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjZGNDlDNjYxNTU0NUM4RDAwMDdGMzlEIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVf
QnVuZGxlLmNwcCAqLzsgfTsKQEAgLTM4MCw2ICszODQsMTAgQEAKIAkJRTEyMjBEQzkxNTVCMjg3
RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFzaC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGluZ1N0eWxlQ3Jhc2gubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBs
aWJndGVzdC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCUY2NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGFDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2NjBBQTBGMTVB
NUY2MjQwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFD
YWxsYmFja19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjY2MEFBMTIxNUE2MTlDODAwM0ExMjQz
IC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNjYwQUExNDE1QTYxQUJGMDAzQTEyNDMgLyogSW5qZWN0ZWRCdW5kbGVJbml0aWFs
aXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFD
YWxsYmFja1dpbnNfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjZG
M0YyOTAxMzM0MkZFQjAwQTZCRjE5IC8qIENvb2tpZU1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2llTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY2RjQ5QzY2MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRl
bnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUY2RjQ5QzY3MTU1NDVDOEQwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRl
bnNpb25Ob0NhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERP
TVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTM4LDEwICs1NDYsMTQgQEAKIAkJCQkxQURCRUZBRDEzMEM2ODlDMDBENjFEMTkgLyogRm9y
Y2VSZXBhaW50LmNwcCAqLywKIAkJCQlCQ0JEMzcwRjEyNUFBMkVCMDBEMkMyOUYgLyogRnJhbWVN
SU1FVHlwZUhUTUwuY3BwICovLAogCQkJCUJDQkQzNzYwMTI1QUJDRkUwMEQyQzI5RiAvKiBGcmFt
ZU1JTUVUeXBlUE5HLmNwcCAqLywKKwkJCQlGNjYwQUEwQzE1QTVGMDYxMDAzQTEyNDMgLyogR2V0
SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwICovLAorCQkJ
CUY2NjBBQTBGMTVBNUY2MjQwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0
aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwICovLAogCQkJCTRCRkRGRkE4MTMxNDc3Nzcw
MDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJNEJGREZGQTYx
MzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8s
CiAJCQkJQkM1NzVBQUMxMjZFODNCOTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFzaWMuY3Bw
ICovLAogCQkJCUJDNTc1QUFGMTI2RTgzQzgwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2lj
X0J1bmRsZS5jcHAgKi8sCisJCQkJRjY2MEFBMTIxNUE2MTlDODAwM0ExMjQzIC8qIEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAgKi8sCisJCQkJRjY2
MEFBMTQxNUE2MUFCRjAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwICovLAogCQkJCTUyQ0I0NzQwMTQ0OEZCOTMwMDg3
Mzk5NSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhOb25EaXJlY3RvcnlVUkwuY3BwICov
LAogCQkJCTMzREM4OTEwMTQxOTUzQTMwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZlclJl
ZGlyZWN0Q2FsbGJhY2suY3BwICovLAogCQkJCTMzREM4OTEzMTQxOTU3OUYwMDc0N0VGNyAvKiBM
b2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcCAqLywKQEAgLTkw
Nyw2ICs5MTksOCBAQAogCQkJCTUyQjhDRjk2MTU4NjhDRjAwMDI4MTA1MyAvKiBTZXREb2N1bWVu
dFVSSS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMjZGQzZDMTU5RDA2MTAwMENDMzc2NSAvKiBI
VE1MRm9ybUNvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjRGOEZB
NDE1OUQ1MkIxMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0ubW0gaW4gU291cmNl
cyAqLywKKwkJCQlGNjYwQUEwRDE1QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjY2
MEFBMTMxNUE2MTlDOTAwM0ExMjQzIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUNhbGxiYWNrV2lucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTkzOSw2ICs5NTMsOCBAQAog
CQkJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzZFMTgyREQxNTQ3NTY5MTAwRjFGQUREIC8q
IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2RjQ5
QzZCMTU1NDVDQTcwMDA3RjM5RCAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGNjYwQUExMTE1QTVGNjMxMDAzQTEyNDMgLyogR2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUY2NjBBQTE1MTVBNjFBQkYwMDNBMTI0MyAvKiBJbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9HZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmZl
ODc5Ci0tLSAvZGV2L251bGwKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9H
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1
ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitzdGF0aWMgYm9vbCBkb25lOworCitzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIkV4dHJhIGluaXRpYWxpemF0aW9uIGRhdGEiLCBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4obWVzc2FnZUJvZHkpKTsKKyAgICBkb25lID0gdHJ1ZTsKK30KKworc3RhdGljIFdLVHlwZVJl
ZiBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIFV0aWw6OmNyZWF0
ZUluaXRpYWxpemF0aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdCgiR2V0SW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tUZXN0IiwgIFV0aWw6OnRvV0so
IkV4dHJhIGluaXRpYWxpemF0aW9uIGRhdGEiKS5nZXQoKSk7Cit9CisKK1RFU1QoV2ViS2l0Miwg
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2spCit7CisgICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNv
bnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CisKKyAgICBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudCBpbmplY3RlZEJ1bmRsZUNsaWVudDsKKyAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxl
Q2xpZW50LCAwLCBzaXplb2YoaW5qZWN0ZWRCdW5kbGVDbGllbnQpKTsKKyAgICBpbmplY3RlZEJ1
bmRsZUNsaWVudC52ZXJzaW9uID0gMTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5jbGllbnRJ
bmZvID0gMDsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5kaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZSA9IGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlOworICAg
IGluamVjdGVkQnVuZGxlQ2xpZW50LmdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSA9IGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YTsKKyAgICBXS0Nv
bnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCAmaW5qZWN0ZWRCdW5k
bGVDbGllbnQpOworCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CisKKyAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVS
TEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxs
YmFja19CdW5kbGUuY3BwIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9HZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NTAwYjUKLS0tIC9kZXYvbnVsbAorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRl
c3QuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYktpdDIv
V0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBHZXRJ
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3QgOiBwdWJsaWMg
SW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICBHZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZp
ZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tU
eXBlUmVmIHVzZXJEYXRhKQorICAgIHsKKyAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShidW5k
bGUsIFV0aWw6OnRvV0soIlJldHVybiB0aGUgdXNlckRhdGEiKS5nZXQoKSwgdXNlckRhdGEpOwor
ICAgIH0KK307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEdldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdD4gcmVnaXN0cmFyKCJH
ZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3QiKTsKKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxs
YmFja1dpbnMuY3BwIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnMuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MGNmMzkKLS0tIC9kZXYvbnVsbAorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YUNhbGxiYWNrV2lucy5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKwor
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBkb25lOworCitzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tTdHJpbmdSZWYsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlNldCBpbiB0aGUgZ2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhIGNhbGxiYWNrIiwgc3RhdGljX2Nhc3Q8V0tTdHJp
bmdSZWY+KG1lc3NhZ2VCb2R5KSk7CisgICAgZG9uZSA9IHRydWU7Cit9CisKK3N0YXRpYyBXS1R5
cGVSZWYgZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBVdGlsOjpj
cmVhdGVJbml0aWFsaXphdGlvbkRpY3Rpb25hcnlGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc1Rlc3QiLCAgVXRpbDo6
dG9XSygiU2V0IGluIHRoZSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEg
Y2FsbGJhY2siKS5nZXQoKSk7Cit9CisKK1RFU1QoV2ViS2l0MiwgSW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVk
QnVuZGxlKCkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gaW5pdGlhbGl6YXRp
b25EaWN0aW9uYXJ5KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUluaXRpYWxpemF0aW9uRGljdGlvbmFy
eUZvckluamVjdGVkQnVuZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhQ2FsbGJhY2tXaW5zVGVzdCIsICBVdGlsOjp0b1dLKCJTZXQgd2l0aCBXS0NvbnRleHRTZXRJ
bml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUiKS5nZXQoKSkpOworICAgIFdL
Q29udGV4dFNldEluaXRpYWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShjb250ZXh0
LmdldCgpLCBpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkuZ2V0KCkpOworCisgICAgV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CisgICAgbWVtc2V0KCZp
bmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7Cisg
ICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQudmVyc2lvbiA9IDE7CisgICAgaW5qZWN0ZWRCdW5kbGVD
bGllbnQuY2xpZW50SW5mbyA9IDA7CisgICAgaW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUgPSBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZTsKKyAgICBpbmplY3RlZEJ1bmRsZUNsaWVudC5nZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGEgPSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGE7CisgICAgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSwg
JmluamVjdGVkQnVuZGxlQ2xpZW50KTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNv
bnRleHQuZ2V0KCkpOworCisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHVybChBZG9wdFdLLCBV
dGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKSk7CisgICAgV0tQYWdl
TG9hZFVSTCh3ZWJWaWV3LnBhZ2UoKSwgdXJsLmdldCgpKTsKKworICAgIFV0aWw6OnJ1bigmZG9u
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhQ2FsbGJhY2tXaW5zX0J1bmRsZS5jcHAgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19C
dW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NzA4YTQKLS0t
IC9kZXYvbnVsbAorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3BwCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworY2xhc3MgSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tX
aW5zVGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworcHVibGljOgorICAgIEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc1Rlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50
aWZpZXIpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQorICAgIHsKKyAgICAgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShidW5kbGUsIFV0aWw6OnRvV0soIlJldHVybiB0aGUgdXNlckRhdGEiKS5n
ZXQoKSwgdXNlckRhdGEpOworICAgIH0KK307CisKK3N0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6
OlJlZ2lzdGVyPEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lu
c1Rlc3Q+IHJlZ2lzdHJhcigiSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2Fs
bGJhY2tXaW5zVGVzdCIpOworCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZmQ2ODg1Ny4uNGQ3OWYxYSAxMDA2
NDQKLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzE5LDcgKzMxOSw4IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluaXRpYWxpemUoaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFy
Z3ZbXSkKICAgICAgICAga1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Q3VycmVudFZlcnNp
b24sCiAgICAgICAgIHRoaXMsCiAgICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlLAotICAgICAgICBkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlCisgICAgICAgIGRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUsCisgICAgICAgIDAgLy8gZ2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhCiAgICAgfTsKICAgICBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChtX2NvbnRl
eHQuZ2V0KCksICZpbmplY3RlZEJ1bmRsZUNsaWVudCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>