<?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>140108</bug_id>
          
          <creation_ts>2015-01-05 17:36:48 -0800</creation_ts>
          <short_desc>Add a DatabaseProvider subclass in WebKit2 and use it for IndexedDB</short_desc>
          <delta_ts>2015-01-06 08:54:18 -0800</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058871</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-05 17:36:48 -0800</bug_when>
    <thetext>Add a DatabaseProvider subclass in WebKit2 and use it for IndexedDB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058872</commentid>
    <comment_count>1</comment_count>
      <attachid>244023</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-05 17:40:45 -0800</bug_when>
    <thetext>Created attachment 244023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058896</commentid>
    <comment_count>2</comment_count>
      <attachid>244023</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-05 20:16:11 -0800</bug_when>
    <thetext>Comment on attachment 244023
Patch

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

&gt; Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp:44
&gt; +RefPtr&lt;WebDatabaseProvider&gt; WebDatabaseProvider::getOrCreate(uint64_t identifier)

Why not use Ref for the return value instead of RefPtr since it’s never null?

&gt; Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.cpp:50
&gt; +    RefPtr&lt;WebDatabaseProvider&gt; storageNamespaceProvider = adoptRef(new WebDatabaseProvider(identifier));

Why not use Ref for this instead of RefPtr since it’s never null?

&gt; Source/WebKit2/WebProcess/Databases/WebDatabaseProvider.h:42
&gt; +    RefPtr&lt;WebCore::IDBFactoryBackendInterface&gt; createIDBFactoryBackend() override;

I think you should include &quot;virtual&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058897</commentid>
    <comment_count>3</comment_count>
      <attachid>244023</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-01-05 20:16:34 -0800</bug_when>
    <thetext>Comment on attachment 244023
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:375
&gt; +    pageConfiguration.databaseProvider = WebDatabaseProvider::getOrCreate(m_pageGroup-&gt;pageGroupID());

What guarantees this ID won’t be 0 or -1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059013</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-06 08:49:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 244023 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=244023&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:375
&gt; &gt; +    pageConfiguration.databaseProvider = WebDatabaseProvider::getOrCreate(m_pageGroup-&gt;pageGroupID());
&gt; 
&gt; What guarantees this ID won’t be 0 or -1?

The page group ID will never be null, it&apos;s decided by the UI process. (In the future, we won&apos;t use the page group ID for this but an ID representing the website data store).

I&apos;ll make the Ref changes you suggested, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059017</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-06 08:54:18 -0800</bug_when>
    <thetext>Committed r177960: &lt;http://trac.webkit.org/changeset/177960&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244023</attachid>
            <date>2015-01-05 17:40:45 -0800</date>
            <delta_ts>2015-01-05 20:16:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140108-20150105174049.patch</filename>
            <type>text/plain</type>
            <size>19953</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk3NTVlZWNlNDkzMmNi
YjM4NDA3Nzc0ZmJhMjQ2OTYxZDk0ZmM5MS4uYWE1MjQ5YTFiMjhhMTQ1MDQ5ZWE1ZGUwNDYwZWNj
OWNiZThkYmI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDE1LTAxLTA1ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIGEgRGF0YWJh
c2VQcm92aWRlciBzdWJjbGFzcyBpbiBXZWJLaXQyIGFuZCB1c2UgaXQgZm9yIEluZGV4ZWREQgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMTA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93SW5kZXhlZERhdGFiYXNlOjppbmRleGVkREIpOgorICAgICAgICBHZXQgdGhl
IElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlIGZyb20gdGhlIGRhdGFiYXNlIHByb3ZpZGVyLgor
CisgICAgICAgICogcGFnZS9EYXRhYmFzZVByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlUHJvdmlkZXI6OmlkYkZhY3RvcnlCYWNrZW5kKToKKyAgICAgICAgQ2hhbmdlIHRo
aXMgdG8gcmV0dXJuIGEgcG9pbnRlci4KKworICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6ZGF0YWJhc2VQcm92aWRlcik6CisgICAgICAgIEFkZCBhIGdldHRl
ci4KKworMjAxNS0wMS0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CiAgICAgICAgIEludHJvZHVjZSBhIHBlci1wYWdlIGRhdGFiYXNlIHByb3ZpZGVyIGNsYXNzCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAxMDIKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGQ5ZjNhODA4NDVkNWJlMWUyNmQ3MDUwYjNhODczNDA1NDUzMWIyNGUuLjQ0
ZjQ3YzU0MTlkYTgyNWM4ZjNmYjNhMTkyMGVhYmU3NmMwMDlmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNS0wMS0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBhIERhdGFiYXNlUHJvdmlkZXIgc3ViY2xhc3MgaW4gV2ViS2l0
MiBhbmQgdXNlIGl0IGZvciBJbmRleGVkREIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MDEwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6ZGF0YWJh
c2VQcm92aWRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRP
ckNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlUHJvdmlkZXI6OldlYkRhdGFi
YXNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZVByb3ZpZGVyOjp+V2Vi
RGF0YWJhc2VQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRhdGFiYXNlUHJvdmlkZXI6
OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNl
cy9XZWJEYXRhYmFzZVByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisK
IDIwMTUtMDEtMDUgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcGxpY2l0bHkgZGlzbWlzc2VkIEREIHBvcG92ZXJzIGRvbid0IGNsZWFyIGlt
bWVkaWF0ZSBhY3Rpb24gc3RhdGUsIHByZW1hdHVyZWx5IGRpc21pc3NpbmcgdGhlIG5leHQgREQg
aGlnaGxpZ2h0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmNwcAppbmRleCAxYmYwODMzNjM0YTk0MTc1
ZDdmNTc1NjcwMjg2OTMxNzQyNTIyNDk5Li5iOGE0N2IyYWUwNTU2ZjkwZDdhOGQ5YzRjYjhmMWU0
MDE1ZjdiYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9E
T01XaW5kb3dJbmRleGVkRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0RPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xMTEsOCArMTEyLDEx
IEBAIElEQkZhY3RvcnkqIERPTVdpbmRvd0luZGV4ZWREYXRhYmFzZTo6aW5kZXhlZERCKCkKICAg
ICBpZiAoIW1fd2luZG93LT5pc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBpZiAoIW1faWRiRmFjdG9yeSkKLSAgICAgICAgbV9pZGJGYWN0b3J5
ID0gSURCRmFjdG9yeTo6Y3JlYXRlKFBhZ2VHcm91cEluZGV4ZWREYXRhYmFzZTo6ZnJvbShwYWdl
LT5ncm91cCgpKS0+ZmFjdG9yeUJhY2tlbmQoKSk7CisgICAgaWYgKCFtX2lkYkZhY3RvcnkpIHsK
KyAgICAgICAgaWYgKERhdGFiYXNlUHJvdmlkZXIqIGRhdGFiYXNlUHJvdmlkZXIgPSBwYWdlLT5k
YXRhYmFzZVByb3ZpZGVyKCkpCisgICAgICAgICAgICBtX2lkYkZhY3RvcnkgPSBJREJGYWN0b3J5
OjpjcmVhdGUoZGF0YWJhc2VQcm92aWRlci0+aWRiRmFjdG9yeUJhY2tlbmQoKSk7CisgICAgfQor
CiAgICAgcmV0dXJuIG1faWRiRmFjdG9yeS5nZXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCAxOGYyNGQ3MGQ0ZTk1ZjkwYTEzMTQzN2QxZDdjMjYzOWJmMjMzYzRlLi42YmI2MmZkNTRk
ZDg0MDRiMTQ2Njk5MTRlNzA3YzdkZjgwYjY1ZWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
NjgzLDYgKzY4Myw3IEBAIF9fWk43V2ViQ29yZTE2QXBwbGljYXRpb25DYWNoZTE4ZGlza1VzYWdl
Rm9yT3JpZ2luRVBOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3JlMTZBcHBsaWNhdGlv
bkNhY2hlMjBkZWxldGVDYWNoZUZvck9yaWdpbkVQTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43
V2ViQ29yZTE2Q1NTUGFyc2VyQ29udGV4dEMxRVJOU184RG9jdW1lbnRFUktOU18zVVJMRVJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTZDYWxjdWxhdGlvblZhbHVlNmNyZWF0ZUVOU3QzX18x
MTB1bmlxdWVfcHRySU5TXzE4Q2FsY0V4cHJlc3Npb25Ob2RlRU5TMV8xNGRlZmF1bHRfZGVsZXRl
SVMzX0VFRUVOU18zMENhbGN1bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZUUKK19fWk43V2ViQ29y
ZTE2RGF0YWJhc2VQcm92aWRlckQyRXYKIF9fWk43V2ViQ29yZTE2RGF0YWJhc2VTdHJhdGVneTE3
Z2V0RGF0YWJhc2VTZXJ2ZXJFdgogX19aTjdXZWJDb3JlMTZEYXRhYmFzZVN0cmF0ZWd5MjNjcmVh
dGVJREJGYWN0b3J5QmFja2VuZEV2CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMkFj
Y2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJkCkBAIC0yMTE5LDYgKzIxMjAsNyBAQCBfX1pUVk43V2Vi
Q29yZTE0TG9hZGVyU3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE0U3RhdGljTm9kZUxpc3RFCiBf
X1pUVk43V2ViQ29yZTE1UGxhdGZvcm1DQUxheWVyRQogX19aVFZON1dlYkNvcmUxNkJsb2JSZWdp
c3RyeUltcGxFCitfX1pUVk43V2ViQ29yZTE2RGF0YWJhc2VQcm92aWRlckUKIF9fWlRWTjdXZWJD
b3JlMTZEYXRhYmFzZVN0cmF0ZWd5RQogX19aVFZON1dlYkNvcmUxNkljb25EYXRhYmFzZUJhc2VF
CiBfX1pUVk43V2ViQ29yZTE3RnJhbWVMb2FkZXJDbGllbnRFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODA5YjY5MzU2OWQwNzUw
MjU4ODg1NmMyN2Y0Njg4ZDkyMzU1NGNjMy4uMmU3OWQ0MzFjYmQwOTZkMDZmM2QzZTAyMDc2ZmIw
YTJiZjFjZjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtODQ5LDcgKzg0OSw3IEBACiAJCTFBQzkwMEMzMTk0M0MwRkMwMDg2
MjVCNSAvKiBIVFRQSGVhZGVyTmFtZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFDOTAwQzAxOTQzQzBBMDAwODYyNUI1IC8qIEhUVFBIZWFkZXJO
YW1lcy5jcHAgKi87IH07CiAJCTFBQ0FERDc5MTg4MEQ5MUMwMEQ4QjcxRCAvKiBQcm9ncmVzc1Ry
YWNrZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQ0FERDc4MTg4MEQ5MUMwMEQ4QjcxRCAvKiBQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUNCMkIy
MzFBNTczM0Y0MDAzMzMzOTIgLyogRGF0YWJhc2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNCMkIyMTFBNTczM0Y0MDAzMzMzOTIg
LyogRGF0YWJhc2VQcm92aWRlci5jcHAgKi87IH07Ci0JCTFBQ0IyQjI0MUE1NzMzRjQwMDMzMzM5
MiAvKiBEYXRhYmFzZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUNCMkIyMjFBNTczM0Y0MDAzMzMzOTIgLyogRGF0YWJhc2VQcm92aWRl
ci5oICovOyB9OworCQkxQUNCMkIyNDFBNTczM0Y0MDAzMzMzOTIgLyogRGF0YWJhc2VQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDQjJC
MjIxQTU3MzNGNDAwMzMzMzkyIC8qIERhdGFiYXNlUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUNEMUI2MzBCMDI5NzM5MDA3RTUw
MTYgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NUU3MTE0NDBBQzVE
NTM0MDA1MzI3MEYgLyogRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmggKi87IH07CiAJ
CTFBQ0U1M0RGMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUNFNTNERDBBOEQxODgxMDAyMjk0
N0QgLyogSlNET01QYXJzZXIuY3BwICovOyB9OwogCQkxQUNFNTNFMDBBOEQxODgxMDAyMjk0N0Qg
LyogSlNET01QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQ0U1M0RFMEE4RDE4ODEwMDIyOTQ3RCAvKiBKU0RPTVBhcnNlci5oICovOyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EYXRhYmFzZVByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGF0YWJhc2VQcm92aWRlci5jcHAKaW5kZXggMTAxYmZmZDY5NDI1
YWI5MGQzMzBiM2RkYjhmZTFmMGFiYmE0ZWRmNS4uMzkxZDQwMzA4NjRmYzgwYzU0Y2UzZjhhM2U5
OGMzNDljZDhiYmFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EYXRhYmFzZVBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RhdGFiYXNlUHJvdmlkZXIuY3Bw
CkBAIC0zNSwxNCArMzUsMTQgQEAgRGF0YWJhc2VQcm92aWRlcjo6fkRhdGFiYXNlUHJvdmlkZXIo
KQogfQogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi1SZWZQdHI8SURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2U+IERhdGFiYXNlUHJvdmlkZXI6OmlkYkZhY3RvcnlCYWNrZW5kKCkKK0lE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBEYXRhYmFzZVByb3ZpZGVyOjppZGJGYWN0b3J5QmFj
a2VuZCgpCiB7CiAgICAgaWYgKCFtX2RpZENyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNl
KSB7CiAgICAgICAgIG1fYmFja2VuZEludGVyZmFjZSA9IGNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5k
KCk7CiAgICAgICAgIG1fZGlkQ3JlYXRlSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UgPSB0cnVl
OwogICAgIH0KIAotICAgIHJldHVybiBtX2JhY2tlbmRJbnRlcmZhY2U7CisgICAgcmV0dXJuIG1f
YmFja2VuZEludGVyZmFjZS5nZXQoKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RhdGFiYXNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGF0
YWJhc2VQcm92aWRlci5oCmluZGV4IGEzY2IxMTQ3NzgyNTlmODUyZTUyMzNhNjRlMDA4ZjRmNjQ5
MjA5ZDUuLmEwNzNiYTkzYzU3MjQwNDVmYmE3YzQxYmE2N2MzNjFlMjQ4NzZhNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGF0YWJhc2VQcm92aWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRGF0YWJhc2VQcm92aWRlci5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5EYXRhYmFzZVByb3ZpZGVyKCk7CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGlkYkZhY3Rv
cnlCYWNrZW5kKCk7CisgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3RvcnlC
YWNrZW5kKCk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZTE2YTAwY2Y5
NTFjNTg3Yzg2YzI2ZmM2MGE4MTc3NjZmODU4MjkzYi4uNTUwYTFmYTNmNmU5NDk1NWE2MGEzZjI4
Mzg2NzYxN2QwMzQyMTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTQwMyw2ICs0MDMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRMYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCh1bnNp
Z25lZCBjb3VudCkgeyBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudCA9IGNv
dW50OyB9CiAgICAgdW5zaWduZWQgbGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZXNDb3VudDsg
fQogCisgICAgRGF0YWJhc2VQcm92aWRlciogZGF0YWJhc2VQcm92aWRlcigpIHsgcmV0dXJuIG1f
ZGF0YWJhc2VQcm92aWRlci5nZXQoKTsgfQorCiAgICAgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
JiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKSB7IHJldHVybiBtX3N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5nZXQoKTsgfQogICAgIHZvaWQgc2V0U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyKFJl
ZjxTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4
IDRmZGFlM2NiYTUwMzFlZjA3ZTMwZDA4MjQ4MTNjNzJhMTk0NjQ1OWIuLmYwNTg0MDk3YTMxYmEy
NzRmZmU4MjE5MjIwNzIxZGNhNTVjNDBmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC00NTIs
NiArNDUyLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCiAKKyAgICBXZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRh
YmFzZVByb3ZpZGVyLmNwcAogICAgIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJ
REJGYWN0b3J5QmFja2VuZC5jcHAKIAogICAgIFdlYlByb2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0
cnlQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyMjliN2M4OTM3NTdiYTM0NWRmNDNjNzI0MjE3MWNlNDJkMGI2OGYy
Li4xMWRhZWE0N2ZlNGRmZDAxOWE2NGQ4MjUxZTExNzQzNDkyYTZiZDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNDMsNiAr
MzQzLDggQEAKIAkJMUFBNTc2MDIxNDk2Qjk3OTAwQTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlck1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUE1NzVGRjE0OTZCN0MwMDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFBNTg4OTIxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNj
YXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUE1ODg5MDExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aCAqLzsgfTsKIAkJMUFBNTg4OTMxMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QTU4ODkxMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgKi87IH07
CisJCTFBQTgzRjZDMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgzRjZBMUE1
QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLzsgfTsKKwkJMUFBODNG
NkQxQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgzRjZCMUE1QjYzRkYwMDAyNkVD
NiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggKi87IH07CiAJCTFBQTlCQUUxMTg0RkZBQzcwMDNC
NkJDNiAvKiBXZWFrT2JqQ1B0ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBOUJBRTAxODRGRkFDNzAwM0I2QkM2IC8qIFdlYWtPYmpDUHRyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFBQjAzNzkx
ODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBQjAzNzcxODVBN0M2QTAwRURGNTAxIC8qIE1l
c3NhZ2VTZW5kZXIuY3BwICovOyB9OwogCQkxQUFCMDM3QTE4NUE3QzZBMDBFREY1MDEgLyogTWVz
c2FnZVNlbmRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBQjAzNzgxODVBN0M2QTAwRURGNTAxIC8qIE1lc3NhZ2VTZW5kZXIuaCAqLzsgfTsKQEAg
LTIzNTIsNiArMjM1NCw4IEBACiAJCTFBQTU3NjAwMTQ5NkI3QzAwMEE0RUUwNiAvKiBFdmVudERp
c3BhdGNoZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVu
dERpc3BhdGNoZXJNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUE1
ODg5MDExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBNTg4OTExMUVFNzA0MDAwNjFCODgyIC8qIE5ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFB
ODNGNkExQTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViRGF0YWJhc2VQcm92aWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQTgzRjZCMUE1QjYzRkYwMDAyNkVDNiAvKiBX
ZWJEYXRhYmFzZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkRhdGFiYXNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBOUJB
RTAxODRGRkFDNzAwM0I2QkM2IC8qIFdlYWtPYmpDUHRyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYWtPYmpDUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBQUIwMzc3MTg1QTdDNkEwMEVERjUwMSAvKiBNZXNzYWdlU2VuZGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lc3NhZ2VTZW5kZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUFCMDM3ODE4NUE3QzZBMDBFREY1MDEgLyogTWVzc2FnZVNl
bmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXNzYWdlU2VuZGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzQ0LDYgKzUzNDgsOCBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1MTFGOEVEQTE4MDg4MTY2MDA0N0RB
OTYgLyogSW5kZXhlZERCICovLAorCQkJCTFBQTgzRjZBMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJE
YXRhYmFzZVByb3ZpZGVyLmNwcCAqLywKKwkJCQkxQUE4M0Y2QjFBNUI2M0ZGMDAwMjZFQzYgLyog
V2ViRGF0YWJhc2VQcm92aWRlci5oICovLAogCQkJCTUxMDMyRjE2MTgwRjczQkIwMDk2MUJCNyAv
KiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwICovLAogCQkJCTUxMDMyRjE3MTgw
RjczQkIwMDk2MUJCNyAvKiBXZWJUb0RhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLywKIAkJ
CSk7CkBAIC03ODQwLDYgKzc4NDYsNyBAQAogCQkJCUJDRDAxMzlCMTEwRkE0MjAwMDNCOEE2NyAv
KiBXS0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRENjY0QzE4QTMwMzBFMDBEODJFMjEg
LyogV0tGcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEQ2NjRFMThBMzAzMUIwMEQ4
MkUyMSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUE4M0Y2
RDFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNCOUY2QTUxMTIzREQwRDAwQTEzN0UwIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBRUEyMkYxNDY4N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtl
eWJvYXJkQWNjZXNzV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDQTg1QzkxMzJBQkE0
RTAwRTk2MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LApAQCAtOTYxOSw2ICs5NjI2LDcgQEAKIAkJCQkyNkYxMEJFOTE5MTg3RTJFMDAxRDBFNjggLyog
V0tTeW50aGV0aWNDbGlja1RhcEdlc3R1cmVSZWNvZ25pemVyLm0gaW4gU291cmNlcyAqLywKIAkJ
CQkwRkNCNEU2OTE4QkJFM0Q5MDAwRkNGQzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MDcxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxQUE4M0Y2QzFBNUI2M0ZGMDAwMjZFQzYgLyogV2Vi
RGF0YWJhc2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0Q1RUJCRTE3NDZCMDRD
MDAwQzFDNDUgLyogV0tUeXBlUmVmV3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3
NjA5MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1VSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQw
NzYxQjEyNEZGMDM3MDA2OEYyMEEgLyogV0tVUkxDRi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92
aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFz
ZVByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYWE5MjdiMWIzNjg3ZjEzY2M3MmJkZjIxYWVkMzBh
M2NhZThkN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5jcHAKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEYXRhYmFzZVByb3ZpZGVy
LmgiCisKKyNpbmNsdWRlICJXZWJJREJGYWN0b3J5QmFja2VuZC5oIgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIEhhc2hNYXA8dWlu
dDY0X3QsIFdlYkRhdGFiYXNlUHJvdmlkZXIqPiYgZGF0YWJhc2VQcm92aWRlcnMoKQoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBXZWJEYXRhYmFzZVByb3Zp
ZGVyKj4+IGRhdGFiYXNlUHJvdmlkZXJzOworCisgICAgcmV0dXJuIGRhdGFiYXNlUHJvdmlkZXJz
OworfQorCitSZWZQdHI8V2ViRGF0YWJhc2VQcm92aWRlcj4gV2ViRGF0YWJhc2VQcm92aWRlcjo6
Z2V0T3JDcmVhdGUodWludDY0X3QgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvJiBzbG90ID0gZGF0
YWJhc2VQcm92aWRlcnMoKS5hZGQoaWRlbnRpZmllciwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVl
OworICAgIGlmIChzbG90KQorICAgICAgICByZXR1cm4gc2xvdDsKKworICAgIFJlZlB0cjxXZWJE
YXRhYmFzZVByb3ZpZGVyPiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgPSBhZG9wdFJlZihuZXcg
V2ViRGF0YWJhc2VQcm92aWRlcihpZGVudGlmaWVyKSk7CisgICAgc2xvdCA9IHN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5nZXQoKTsKKworICAgIHJldHVybiBzdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXI7Cit9CisKK1dlYkRhdGFiYXNlUHJvdmlkZXI6OldlYkRhdGFiYXNlUHJvdmlkZXIodWludDY0
X3QgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitX
ZWJEYXRhYmFzZVByb3ZpZGVyOjp+V2ViRGF0YWJhc2VQcm92aWRlcigpCit7CisgICAgQVNTRVJU
KGRhdGFiYXNlUHJvdmlkZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CisKKyAgICBkYXRh
YmFzZVByb3ZpZGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOworfQorCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCitSZWZQdHI8V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZh
Y2U+IFdlYkRhdGFiYXNlUHJvdmlkZXI6OmNyZWF0ZUlEQkZhY3RvcnlCYWNrZW5kKCkKK3sKKyNp
ZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKKyAgICByZXR1cm4gV2ViSURCRmFjdG9yeUJhY2tl
bmQ6OmNyZWF0ZSgpOworI2Vsc2UKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorI2Vu
ZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYkRhdGFiYXNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJh
c2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2Q3ODZlMTg0MjcyYTQxOTJk
YjIyOTRkMjAwYjBjNzU5MTRjZDlhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRhdGFiYXNlUHJvdmlkZXJfaAorI2RlZmluZSBX
ZWJEYXRhYmFzZVByb3ZpZGVyX2gKKworI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VQcm92aWRl
ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGF0YWJhc2VQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpEYXRhYmFzZVByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmUHRyPFdlYkRhdGFiYXNlUHJvdmlkZXI+IGdldE9yQ3JlYXRlKHVpbnQ2NF90IGlk
ZW50aWZpZXIpOworICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlUHJvdmlkZXIoKTsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBXZWJEYXRhYmFzZVByb3ZpZGVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
OworCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisgICAgUmVmUHRyPFdlYkNvcmU6OklE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGVJREJGYWN0b3J5QmFja2VuZCgpIG92ZXJy
aWRlOworI2VuZGlmCisKKyAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7Cit9OworCit9
CisKKyNlbmRpZiAvLyBXZWJEYXRhYmFzZVByb3ZpZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkYTlkNjc4Y2NiMGZjOTk2ODRkNzEy
ZDhhZGFmMDc4NGUzYjY3MWMyLi5kNjc4NWY0ZTJhMTE4NDgzY2VjODkzNzQ3OTY2MmQwZDM0MTY0
MDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnUuaCIKICNpbmNsdWRl
ICJXZWJDb250ZXh0TWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYkRhdGFiYXNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50TG9hZGVyLmgiCiAj
aW5jbHVkZSAiV2ViRHJhZ0NsaWVudC5oIgpAQCAtMzcxLDYgKzM3Miw3IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCA9
IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoKnRoaXMpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50ID0gbmV3IFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KCp0aGlzKTsKIAorICAgIHBhZ2VDb25maWd1cmF0aW9uLmRhdGFiYXNlUHJvdmlkZXIgPSBX
ZWJEYXRhYmFzZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cC0+cGFnZUdyb3VwSUQo
KSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyID0gV2Vi
U3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpnZXRPckNyZWF0ZShtX3BhZ2VHcm91cC0+cGFnZUdy
b3VwSUQoKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyID0g
bV91c2VyQ29udGVudENvbnRyb2xsZXIgPyAmbV91c2VyQ29udGVudENvbnRyb2xsZXItPnVzZXJD
b250ZW50Q29udHJvbGxlcigpIDogJm1fcGFnZUdyb3VwLT51c2VyQ29udGVudENvbnRyb2xsZXIo
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi52aXNpdGVkTGlua1N0b3JlID0gVmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlE
KTsK
</data>
<flag name="review"
          id="268939"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>