<?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>233356</bug_id>
          
          <creation_ts>2021-11-19 02:43:47 -0800</creation_ts>
          <short_desc>[Model] add support for controlling looping animations</short_desc>
          <delta_ts>2021-11-19 10:22:11 -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>WebKit 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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816790</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-11-19 02:43:47 -0800</bug_when>
    <thetext>[Model] add support for controlling looping animations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816791</commentid>
    <comment_count>1</comment_count>
      <attachid>444795</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-11-19 02:45:42 -0800</bug_when>
    <thetext>Created attachment 444795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816792</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-11-19 02:45:48 -0800</bug_when>
    <thetext>&lt;rdar://problem/85428884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816870</commentid>
    <comment_count>3</comment_count>
      <attachid>444795</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-11-19 08:14:20 -0800</bug_when>
    <thetext>Comment on attachment 444795
Patch

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

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:366
&gt; +        callOnMainRunLoop([weakThis = WeakPtr { *this }, completionHandler = WTFMove(completionHandler), error = WebCore::ResourceError { WebCore::ResourceError::Type::General }] () mutable {

Nit - might be simpler as `completionHandler(makeUnexpected(WebCore::ResourceError { WebCore::ResourceError::Type::General }));`, instead of copying the error via block capture.

&gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:397
&gt; +    callOnMainRunLoop([weakThis = WeakPtr { *this }, completionHandler = WTFMove(completionHandler)] () mutable {

Same question as the other patch — could we clarify why we need these `callOnMainRunLoop`s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816901</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-11-19 09:59:15 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 444795 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444795&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:366
&gt; &gt; +        callOnMainRunLoop([weakThis = WeakPtr { *this }, completionHandler = WTFMove(completionHandler), error = WebCore::ResourceError { WebCore::ResourceError::Type::General }] () mutable {
&gt; 
&gt; Nit - might be simpler as
&gt; `completionHandler(makeUnexpected(WebCore::ResourceError {
&gt; WebCore::ResourceError::Type::General }));`, instead of copying the error
&gt; via block capture.

Absolutely, will fix when landing.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm:397
&gt; &gt; +    callOnMainRunLoop([weakThis = WeakPtr { *this }, completionHandler = WTFMove(completionHandler)] () mutable {
&gt; 
&gt; Same question as the other patch — could we clarify why we need these
&gt; `callOnMainRunLoop`s?

I think we only need those when using block-based APIs, will remove the use of `callOnMainRunLoop()` when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816908</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-11-19 10:22:11 -0800</bug_when>
    <thetext>Committed r286066 (244453@main): &lt;https://commits.webkit.org/244453@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444795</attachid>
            <date>2021-11-19 02:45:42 -0800</date>
            <delta_ts>2021-11-19 07:57:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233356-20211119114541.patch</filename>
            <type>text/plain</type>
            <size>22665</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNkZDQ2MGZjYWMxZmRh
MGNmYWY2ZDdiMWVmNTFkOGI2MTVjMzZiZS4uODg3MDAxZGNkMGQyN2M5MjY1ODEyMmY5NjdjYmNj
OTE1YzU1NDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTE5ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtNb2RlbF0gYWRkIHN1
cHBvcnQgZm9yIGNvbnRyb2xsaW5nIGxvb3BpbmcgYW5pbWF0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMzU2CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NTQyODg4ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBhZGQgdHdvIG5ldyBwcm9taXNlLWJhc2VkIG1ldGhvZHMgdG8gdGhlIEhU
TUxNb2RlbEVsZW1lbnQgSURMIHRvIGNvbnRyb2wgdGhlIGxvb3Bpbmcgc3RhdGUKKyAgICAgICAg
b2YgdGhlIGFuaW1hdGlvbiBidWlsdCBpbnRvIHRoZSBVU0RaIGFzc2V0OiBpc0xvb3BpbmdBbmlt
YXRpb24oKSBhbmQgc2V0SXNMb29waW5nQW5pbWF0aW9uKCkuCisgICAgICAgIEFsbCB0aGVzZSBt
ZXRob2RzIGFyZSBwcm9taXNlLWJhc2VkLgorCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudDo6aXNMb29waW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVs
ZW1lbnQ6OnNldElzTG9vcGluZ0FuaW1hdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1l
bGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5pZGw6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L01vZGVsUGxheWVyLmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1
bW15TW9kZWxQbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllcjo6
aXNMb29waW5nQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXI6
OnNldElzTG9vcGluZ0FuaW1hdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5oOgorICAgICAgICAqIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsUGxheWVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2NlbmVLaXRNb2RlbFBsYXllcjo6aXNMb29waW5nQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjZW5lS2l0TW9kZWxQbGF5ZXI6OnNldElzTG9vcGluZ0FuaW1hdGlvbik6CisK
IDIwMjEtMTEtMTggIEZyw6lkw6lyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgTnVsbHB0ciBjcmFzaCBpbiBTaW1wbGlmaWVkQmFja3dhcmRzVGV4dEl0ZXJhdG9yOjpyYW5n
ZSgpIHZpYSBwcmV2aW91c1NlbnRlbmNlUG9zaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGNh
ODQzYzMwOTE0NWZhNDc1NTJmN2I3OTBjODdiNzdkYzljYjBjMzYuLmIyYTU1OTkyMmVhMGE4ZTE0
OWJmOTYyMTU3MTJkZTM0MDI3YmY1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTExLTE5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIGNvbnRyb2xsaW5nIGxvb3BpbmcgYW5pbWF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMz
MzU2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTQyODg4ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyBBUlFMIFNQSXMgd2Ug
YXJlIHVzaW5nIHRvIGNvbnRyb2wgYW5pbWF0aW9uIGxvb3BpbmcuCisKKyAgICAgICAgKiBwYWwv
c3BpL2lvcy9TeXN0ZW1QcmV2aWV3U1BJLmg6CisgICAgICAgICogcGFsL3NwaS9tYWMvU3lzdGVt
UHJldmlld1NQSS5oOgorCiAyMDIxLTExLTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJl
c3VtaW5nIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTk0OGUxOGFmMjk5YzY5N2Q0NzdhMmNiMTQx
MjNkOTdiMDY5OGQyOS4uYmJmMzBjOWE1NDcxOGY5YjA1NjZlNDI1YzgzYTQ3YjNkM2NlYTcyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAyMS0xMS0xOSAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBbTW9kZWxdIGFkZCBzdXBwb3J0IGZvciBjb250
cm9sbGluZyBsb29waW5nIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzM1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODU0Mjg4
ODQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhw
b3NlIG5ldyBXZWJQYWdlUHJveHkgbWVzc2FnZXMgdG8gbGV0IHRoZSBXZWJQcm9jZXNzIG1lc3Nh
Z2UgdGhlIFVJUHJvY2VzcworICAgICAgICB0byBjYWxsIGludG8gQVNWSW5saW5lUHJldmlldyBt
ZXRob2RzIHRvIGdldCBhbmQgc2V0IHRoZSBhbmltYXRpb24ncyBsb29waW5nCisgICAgICAgIHN0
YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6aXNMb29w
aW5nQW5pbWF0aW9uRm9yTW9kZWxFbGVtZW50KToKKyAgICAgICAgKFdlYktpdDo6TW9kZWxFbGVt
ZW50Q29udHJvbGxlcjo6c2V0SXNMb29waW5nQW5pbWF0aW9uRm9yTW9kZWxFbGVtZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Om1vZGVsRWxlbWVudElzTG9vcGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6bW9kZWxFbGVtZW50U2V0SXNMb29waW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllci5tbToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXI6OmlzTG9vcGluZ0FuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRJc0xvb3BpbmdBbmltYXRpb24pOgorCiAy
MDIxLTExLTE4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFtNb2RlbF0gYWRkIHN1cHBvcnQgZm9yIHBhdXNpbmcgYW5kIHJlc3VtaW5nIGFuaW1hdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9k
ZWxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50LmNwcAppbmRleCBmNGIzNTM1MTFlMmQwNmY1OTFiYTQ1YmI2ODNjZDg2OGMx
YmU1ZWJjLi40ZTkzMDliNGZjNjIwMjkyZjI4NzRjNTNmN2NkZDg4YWNjZmNiYzg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCkBAIC00MzcsNiArNDM3LDM2IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
cGF1c2VBbmltYXRpb24oRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKICAgICBz
ZXRBbmltYXRpb25Jc1BsYXlpbmcoZmFsc2UsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OmlzTG9vcGluZ0FuaW1hdGlvbihJc0xvb3BpbmdBbmltYXRpb25Q
cm9taXNlJiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fbW9kZWxQbGF5ZXIpIHsKKyAgICAgICAg
cHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbW9kZWxQ
bGF5ZXItPmlzTG9vcGluZ0FuaW1hdGlvbihbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChz
dGQ6Om9wdGlvbmFsPGJvb2w+IGlzTG9vcGluZykgbXV0YWJsZSB7CisgICAgICAgIGlmICghaXNM
b29waW5nKQorICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCppc0xvb3BpbmcpOworICAgIH0pOworfQorCit2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OnNldElzTG9vcGluZ0FuaW1hdGlvbihib29sIGlzTG9vcGluZywg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fbW9kZWxQ
bGF5ZXIpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIG1fbW9kZWxQbGF5ZXItPnNldElzTG9vcGluZ0FuaW1hdGlvbihpc0xvb3Bpbmcs
IFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChzdWNjZXNzKQorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHByb21pc2UucmVqZWN0KCk7CisgICAgfSk7Cit9CisKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKaW5kZXggYTJi
YTdjMjYzODk2NTkyMTQyNWUyM2Q1MzI5ZWJiMjBlODYyMGZkNi4uNzBhMjc0NDdkODY0YTc5YjNh
Nzk5NzI4NTRiZTEyODIyYTJkYjQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCkBAIC04MCw2ICs4MCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBwbGF5QW5pbWF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lk
PiYmKTsKICAgICB2b2lkIHBhdXNlQW5pbWF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYm
KTsKIAorICAgIHVzaW5nIElzTG9vcGluZ0FuaW1hdGlvblByb21pc2UgPSBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj47CisgICAgdm9pZCBpc0xvb3BpbmdBbmltYXRpb24oSXNMb29waW5n
QW5pbWF0aW9uUHJvbWlzZSYmKTsKKyAgICB2b2lkIHNldElzTG9vcGluZ0FuaW1hdGlvbihib29s
LCBET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CisKICAgICBib29sIGlzRHJhZ2dhYmxlSWdu
b3JpbmdBdHRyaWJ1dGVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaWRsCmluZGV4IGI2ZDVmZjQyY2M3ZGJhNWFlM2QwMWNkZTQ3NWQ3M2I4
ODUyZjA4MzMuLjQ4MTY1Y2FjMWMyM2FlM2E4OTEzNzY0ZjBlMWY5ZmFlOWM1NzNjNjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5pZGwKQEAgLTQwLDQgKzQwLDcgQEAKICAgICBQcm9taXNlPGJvb2xlYW4+IGlz
UGxheWluZ0FuaW1hdGlvbigpOwogICAgIFByb21pc2U8dW5kZWZpbmVkPiBwbGF5QW5pbWF0aW9u
KCk7CiAgICAgUHJvbWlzZTx1bmRlZmluZWQ+IHBhdXNlQW5pbWF0aW9uKCk7CisKKyAgICBQcm9t
aXNlPGJvb2xlYW4+IGlzTG9vcGluZ0FuaW1hdGlvbigpOworICAgIFByb21pc2U8dW5kZWZpbmVk
PiBzZXRJc0xvb3BpbmdBbmltYXRpb24oYm9vbGVhbiBsb29waW5nKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCmluZGV4IGFk
NzJjYjBkMDlmMTI2YzA2ZjFkN2RkMDE4YWRmNWI5Y2E5YzE3MjMuLjE3OGIwNmFjZTZjODUwZTcz
NmJiY2IzZDVkMjJhMmRjNWVkYjI1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FtZXJhKEhUTUxNb2RlbEVsZW1lbnRDYW1lcmEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBpc1BsYXlpbmdBbmltYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PGJvb2w+JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbklzUGxheWlu
Zyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgc3VjY2Vzcyk+JiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgaXNMb29waW5nQW5pbWF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxib29sPiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0xv
b3BpbmdBbmltYXRpb24oYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHN1Y2Nlc3Mp
PiYmKSA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAKaW5kZXggNDM2
NzdlY2MzOTAwMTAyYjIxNDNjNjJkZDNmZTkzOTYxNTg5N2Y2OC4uYzE5Yzc0ODhkNTAxODAyZDc5
ZjRjNDU5ODQ2MTg1MTY0MDY5MDQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcApA
QCAtODYsNCArODYsMTIgQEAgdm9pZCBEdW1teU1vZGVsUGxheWVyOjpzZXRBbmltYXRpb25Jc1Bs
YXlpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHMKIHsKIH0KIAordm9pZCBE
dW1teU1vZGVsUGxheWVyOjppc0xvb3BpbmdBbmltYXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKQoreworfQorCit2b2lkIER1bW15TW9kZWxQbGF5
ZXI6OnNldElzTG9vcGluZ0FuaW1hdGlvbihib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wgc3VjY2Vzcyk+JiYpCit7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCmluZGV4
IGNlZmE4NzFkM2MwMTUxN2M1MTkzZTIwYmYxMDI5MmM3MWE4MTJhNDkuLjVjZjMyZjY4M2ZkNGNm
MmYyMDYxZmYzNDc2YmYzYjc0YWQ1OTllODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaApA
QCAtNTEsNiArNTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q2FtZXJhKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnRDYW1lcmEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNz
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpc1BsYXlpbmdBbmltYXRpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEFuaW1hdGlvbklzUGxheWluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
c3VjY2Vzcyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaXNMb29waW5nQW5pbWF0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRJc0xvb3BpbmdBbmltYXRpb24oYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHN1Y2Nlc3MpPiYmKSBvdmVycmlkZTsKIAogICAgIFdlYWtQdHI8TW9kZWxQbGF5ZXJD
bGllbnQ+IG1fY2xpZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsUGxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5o
CmluZGV4IDM1MWUxMWM1Y2ZiYWM0NzMzMzIyODI5OTljMjAxYzZmZmVmYjgxN2IuLmQzODQxOGIz
NGE4YjU2ZmM1ZjA2N2ZhODYwNmRhNTU2ZDUzNmI2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9zY2VuZWtpdC9TY2VuZUtpdE1vZGVsUGxheWVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5la2l0L1NjZW5l
S2l0TW9kZWxQbGF5ZXIuaApAQCAtNjUsNiArNjUsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
Q2FtZXJhKEhUTUxNb2RlbEVsZW1lbnRDYW1lcmEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBzdWNjZXNzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpc1BsYXlpbmdBbmltYXRpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKSBvdmVycmlkZTsK
ICAgICB2b2lkIHNldEFuaW1hdGlvbklzUGxheWluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgc3VjY2Vzcyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaXNMb29waW5nQW5pbWF0
aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRJc0xvb3BpbmdBbmltYXRpb24oYm9vbCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHN1Y2Nlc3MpPiYmKSBvdmVycmlkZTsKIAogICAgIC8vIFNjZW5lS2l0
TW9kZWxMb2FkZXJDbGllbnQgb3ZlcnJpZGVzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKFNjZW5lS2l0TW9kZWxMb2FkZXImLCBSZWY8U2NlbmVLaXRNb2RlbD4pIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L3NjZW5l
a2l0L1NjZW5lS2l0TW9kZWxQbGF5ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5tbQppbmRleCA0YTNhN2Q0Y2Yy
MTViZTk3OGI3ZWNiNzMzYmVhMjA2MjBkNzc3ZmIyLi5hYTIyMWFmZjY1MDE1MmYwNTc2OWRmYTc1
MjRjM2IzZDRkZTU1NmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvc2NlbmVraXQvU2NlbmVLaXRNb2RlbFBsYXllci5t
bQpAQCAtMTA0LDYgKzEwNCwxNCBAQCB2b2lkIFNjZW5lS2l0TW9kZWxQbGF5ZXI6OnNldEFuaW1h
dGlvbklzUGxheWluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvbwogewogfQogCit2
b2lkIFNjZW5lS2l0TW9kZWxQbGF5ZXI6OmlzTG9vcGluZ0FuaW1hdGlvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYpCit7Cit9CisKK3ZvaWQgU2NlbmVL
aXRNb2RlbFBsYXllcjo6c2V0SXNMb29waW5nQW5pbWF0aW9uKGJvb2wsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4mJikKK3sKK30KKwogLy8gTUFSSzogLSBTY2VuZUtpdE1v
ZGVsTG9hZGVyQ2xpZW50IG92ZXJyaWRlcy4KIAogdm9pZCBTY2VuZUtpdE1vZGVsUGxheWVyOjpk
aWRGaW5pc2hMb2FkaW5nKFNjZW5lS2l0TW9kZWxMb2FkZXImIGxvYWRlciwgUmVmPFNjZW5lS2l0
TW9kZWw+IG1vZGVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9z
L1N5c3RlbVByZXZpZXdTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2lvcy9TeXN0
ZW1QcmV2aWV3U1BJLmgKaW5kZXggY2U1MTU5Mjk3MDRiMWExZmYwNmNkZTFhNjQxMGYyZDE0M2Qw
ZmRiMi4uNWMwOGI1MzBiZTU1NzhkN2JjZDY0ODY4OWQ2NjM4YzZmYjk5N2ZiYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvaW9zL1N5c3RlbVByZXZpZXdTUEkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9pb3MvU3lzdGVtUHJldmlld1NQSS5oCkBAIC0x
MDgsNiArMTA4LDcgQEAgdHlwZWRlZiB2b2lkICheQVNWQ2FtZXJhVHJhbnNmb3JtUmVwbHlCbG9j
aykgKHNpbWRfZmxvYXQzIGNhbWVyYVRyYW5zZm9ybSwgTlNFcnIKIC0gKHZvaWQpZ2V0Q2FtZXJh
VHJhbnNmb3JtOihBU1ZDYW1lcmFUcmFuc2Zvcm1SZXBseUJsb2NrKXJlcGx5OwogLSAodm9pZClz
ZXRDYW1lcmFUcmFuc2Zvcm06KHNpbWRfZmxvYXQzKXRyYW5zZm9ybTsKIAorQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWR3cml0ZSkgQk9PTCBpc0xvb3Bpbmc7CiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJPT0wgaXNQbGF5aW5nOwogdHlwZWRlZiB2b2lkICheQVNWU2V0SXNQbGF5
aW5nUmVwbHlCbG9jaykgKEJPT0wgaXNQbGF5aW5nLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9y
KTsKIC0gKHZvaWQpc2V0SXNQbGF5aW5nOihCT09MKWlzUGxheWluZyByZXBseTooQVNWU2V0SXNQ
bGF5aW5nUmVwbHlCbG9jaylyZXBseTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3Nw
aS9tYWMvU3lzdGVtUHJldmlld1NQSS5oCmluZGV4IDY1MTAzMWYwNmM1Y2Y0NTNiNDc0YmVlOTU2
OTU4MjUxODMzMzE2YmQuLjhhOTU0MmI4ZDY1YmFkZjg2MWMxZTVlMjlhMjgyMGUyOWQ0OGE3NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3
U1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdT
UEkuaApAQCAtNTgsNiArNTgsNyBAQCB0eXBlZGVmIHZvaWQgKF5BU1ZDYW1lcmFUcmFuc2Zvcm1S
ZXBseUJsb2NrKSAoc2ltZF9mbG9hdDMgY2FtZXJhVHJhbnNmb3JtLCBOU0VycgogLSAodm9pZCln
ZXRDYW1lcmFUcmFuc2Zvcm06KEFTVkNhbWVyYVRyYW5zZm9ybVJlcGx5QmxvY2spcmVwbHk7CiAt
ICh2b2lkKXNldENhbWVyYVRyYW5zZm9ybTooc2ltZF9mbG9hdDMpdHJhbnNmb3JtOwogCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlKSBCT09MIGlzTG9vcGluZzsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc1BsYXlpbmc7CiB0eXBlZGVmIHZvaWQgKF5BU1ZT
ZXRJc1BsYXlpbmdSZXBseUJsb2NrKSAoQk9PTCBpc1BsYXlpbmcsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpOwogLSAodm9pZClzZXRJc1BsYXlpbmc6KEJPT0wpaXNQbGF5aW5nIHJlcGx5OihB
U1ZTZXRJc1BsYXlpbmdSZXBseUJsb2NrKXJlcGx5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCmlu
ZGV4IDEzMGM0OTYzNTAxODM0MzE4NTBmNmZlYTkyMGFjM2E0OWU4MTc3ZjkuLjhmZjAxODM0OGIz
YjYzMzc2ZjZlNDMyYzE5ZWI5YjhlNzczYmFhZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0K
QEAgLTM1OSw2ICszNTksNTAgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpzZXRBbmlt
YXRpb25Jc1BsYXlpbmdGb3JNb2RlbEVsZW1lbnQoTW9kZWxJZGVudGlmaWUKICNlbmRpZgogfQog
Cit2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OmlzTG9vcGluZ0FuaW1hdGlvbkZvck1vZGVs
RWxlbWVudChNb2RlbElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBwcmV2aWV3ID0gcHJldmlld0Zvck1vZGVsSWRlbnRp
Zmllcihtb2RlbElkZW50aWZpZXIpOworICAgIGlmICghcHJldmlld0hhc0FuaW1hdGlvblN1cHBv
cnQocHJldmlldykpIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV2Vh
a1B0ciB7ICp0aGlzIH0sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OlJlc291cmNl
RXJyb3I6OlR5cGU6OkdlbmVyYWwgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQo
ZXJyb3IpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfQU5JTUFUSU9OU19DT05UUk9MKQorICAgIGF1dG8gaXNM
b29waW5nID0gW3ByZXZpZXcgaXNMb29waW5nXTsKKyAgICBjYWxsT25NYWluUnVuTG9vcChbaXNM
b29waW5nLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoaXNMb29waW5nKTsKKyAgICB9
KTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKwordm9pZCBN
b2RlbEVsZW1lbnRDb250cm9sbGVyOjpzZXRJc0xvb3BpbmdBbmltYXRpb25Gb3JNb2RlbEVsZW1l
bnQoTW9kZWxJZGVudGlmaWVyIG1vZGVsSWRlbnRpZmllciwgYm9vbCBpc0xvb3BpbmcsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byogcHJldmlldyA9IHByZXZpZXdGb3JNb2RlbElkZW50aWZpZXIobW9kZWxJZGVudGlmaWVyKTsK
KyAgICBpZiAoIXByZXZpZXdIYXNBbmltYXRpb25TdXBwb3J0KHByZXZpZXcpKSB7CisgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisjaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0FOSU1BVElPTlNfQ09OVFJPTCkKKyAgICBwcmV2aWV3
LmlzTG9vcGluZyA9IGlzTG9vcGluZzsKKyAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIH0pOworI2Vsc2UKKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCiAjZW5kaWYKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCmluZGV4IDE2NGQ2OWEyMjQy
NjYwMDcxNTRjYTA3ODdkMDY4YWZkNjcxNDk5NzUuLmMyYjRjZmZiZjViNzRiMzZiNzM5NGM4MTQz
NDk2ZjgzYTk0MmExMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVs
RWxlbWVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyLmgKQEAgLTU2LDYgKzU2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
Q2FtZXJhRm9yTW9kZWxFbGVtZW50KE1vZGVsSWRlbnRpZmllciwgV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudENhbWVyYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBpc1BsYXlpbmdBbmltYXRpb25Gb3JNb2RlbEVsZW1lbnQoTW9kZWxJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
KT4mJik7CiAgICAgdm9pZCBzZXRBbmltYXRpb25Jc1BsYXlpbmdGb3JNb2RlbEVsZW1lbnQoTW9k
ZWxJZGVudGlmaWVyLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIGlzTG9vcGluZ0FuaW1hdGlvbkZvck1vZGVsRWxlbWVudChNb2RlbElkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4pPiYmKTsKKyAgICB2b2lkIHNldElzTG9vcGluZ0FuaW1hdGlvbkZvck1vZGVsRWxlbWVu
dChNb2RlbElkZW50aWZpZXIsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICB2b2lk
IHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKE1vZGVsSWRlbnRpZmllcik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBhMDkxZGYxOTRlNzBhN2YwZGUyYWFh
YjMyNWM2NWE4MTc0NDkzOGVlLi4xMTEzNTE2MWY2NjE5MWNhMWQwOGIxZTk2NGFiZGY5OTg5ZDAw
MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwODUy
LDYgKzEwODUyLDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRTZXRBbmltYXRp
b25Jc1BsYXlpbmcoTW9kZWxJZGVudGlmaWVyIG1vZGVsSWRlbnRpCiB7CiAgICAgbW9kZWxFbGVt
ZW50Q29udHJvbGxlcigpLT5zZXRBbmltYXRpb25Jc1BsYXlpbmdGb3JNb2RlbEVsZW1lbnQobW9k
ZWxJZGVudGlmaWVyLCBpc1BsYXlpbmcsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
Kwordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudElzTG9vcGluZ0FuaW1hdGlvbihNb2Rl
bElkZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPGJvb2wsIFJlc291cmNlRXJyb3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBt
b2RlbEVsZW1lbnRDb250cm9sbGVyKCktPmlzTG9vcGluZ0FuaW1hdGlvbkZvck1vZGVsRWxlbWVu
dChtb2RlbElkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9p
ZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFNldElzTG9vcGluZ0FuaW1hdGlvbihNb2RlbElk
ZW50aWZpZXIgbW9kZWxJZGVudGlmaWVyLCBib29sIGlzTG9vcGluZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBtb2RlbEVsZW1lbnRD
b250cm9sbGVyKCktPnNldElzTG9vcGluZ0FuaW1hdGlvbkZvck1vZGVsRWxlbWVudChtb2RlbElk
ZW50aWZpZXIsIGlzTG9vcGluZywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDRlODdjNTI5MWYwYTRlNzFmMDFiMGZlMjg1
MzA4NjRjNjQzZTM1ZmQuLmQ5YjgyZDM0MmQ0NzVlNTk5ZGI5YWQyZjljYjMwMzM0YmFjZTViYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01OTIsNiArNTkyLDgg
QEAgcHVibGljOgogICAgIHZvaWQgbW9kZWxFbGVtZW50U2V0Q2FtZXJhKE1vZGVsSWRlbnRpZmll
ciwgV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudENhbWVyYSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCBtb2RlbEVsZW1lbnRJc1BsYXlpbmdBbmltYXRpb24oTW9k
ZWxJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+KT4mJik7CiAgICAgdm9pZCBtb2RlbEVsZW1lbnRTZXRBbmltYXRp
b25Jc1BsYXlpbmcoTW9kZWxJZGVudGlmaWVyLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudElzTG9vcGluZ0FuaW1hdGlvbihNb2Rl
bElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudFNldElzTG9vcGlu
Z0FuaW1hdGlvbihNb2RlbElkZW50aWZpZXIsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykK
ICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKE1vZGVsSWRlbnRpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMWQzOTNkMzU2NDFjMTMyYjkzN2E0YmJkN2I1NjE1OGFmNDIzN2M2NS4uODlkNjAzNDE0YmM4
MjkxMWE0MWViZTYwMzNhODY0OGFjOGM4MjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTk5LDYgKzU5OSw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgTW9kZWxFbGVtZW50U2V0Q2FtZXJhKHN0cnVjdCBX
ZWJLaXQ6Ok1vZGVsSWRlbnRpZmllciBtb2RlbElkZW50aWZpZXIsIHN0cnVjdCBXZWJDb3JlOjpI
VE1MTW9kZWxFbGVtZW50Q2FtZXJhIGNhbWVyYSkgLT4gKGJvb2wgc3VjY2VzcykgQXN5bmMKICAg
ICBNb2RlbEVsZW1lbnRJc1BsYXlpbmdBbmltYXRpb24oc3RydWN0IFdlYktpdDo6TW9kZWxJZGVu
dGlmaWVyIG1vZGVsSWRlbnRpZmllcikgLT4gKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBNb2RlbEVsZW1lbnRTZXRBbmltYXRpb25Jc1Bs
YXlpbmcoc3RydWN0IFdlYktpdDo6TW9kZWxJZGVudGlmaWVyIG1vZGVsSWRlbnRpZmllciwgYm9v
bCBpc1BsYXlpbmcpIC0+IChib29sIHN1Y2Nlc3MpIEFzeW5jCisgICAgTW9kZWxFbGVtZW50SXNM
b29waW5nQW5pbWF0aW9uKHN0cnVjdCBXZWJLaXQ6Ok1vZGVsSWRlbnRpZmllciBtb2RlbElkZW50
aWZpZXIpIC0+IChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQp
IEFzeW5jCisgICAgTW9kZWxFbGVtZW50U2V0SXNMb29waW5nQW5pbWF0aW9uKHN0cnVjdCBXZWJL
aXQ6Ok1vZGVsSWRlbnRpZmllciBtb2RlbElkZW50aWZpZXIsIGJvb2wgaXNMb29waW5nKSAtPiAo
Ym9vbCBzdWNjZXNzKSBBc3luYwogI2VuZGlmCiAKICAgICByZXF1ZXN0UGVybWlzc2lvbihzdHJ1
Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OlBlcm1pc3Np
b25EZXNjcmlwdG9yIGRlc2NyaXB0b3IpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGVybWlz
c2lvblN0YXRlIHN0YXRlKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAppbmRleCBi
OGU1NWIyMzQ1OWM1MDFmZDdmOGE5YWMzZmQ5Mjg1MmRmYjRmNjc3Li44YTM4MDI3MTdhOWIyNzU3
MzlkZDg4YmQ1MzJiZDFiYzVlYzNjNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaApA
QCAtNTcsNiArNTcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q2FtZXJhKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnRDYW1lcmEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNz
KT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpc1BsYXlpbmdBbmltYXRpb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEFuaW1hdGlvbklzUGxheWluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wg
c3VjY2Vzcyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaXNMb29waW5nQW5pbWF0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRJc0xvb3BpbmdBbmltYXRpb24oYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHN1Y2Nlc3MpPiYmKSBvdmVycmlkZTsKIAogICAgIFdlYWtQdHI8V2ViUGFnZT4gbV9w
YWdlOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQ+IG1fY2xpZW50Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCmluZGV4IDk3MDM3YmFlZjhhNTk4MGU1YWQ1ZGYy
MjYwZDg2OTQzMDU3NGI2YmMuLmE4YmIzMjdiYTM4MmY0Y2Y5OTA2ZDFjMzFiYTI5OGJlMDE2OWIx
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KQEAgLTE0OSw2ICsxNDksNTMgQEAg
dm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0QW5pbWF0aW9uSXNQbGF5aW5n
KGJvb2wgaXNQbGF5aW5nLCBDb21wbGUKICAgICBzdHJvbmdQYWdlLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50U2V0QW5pbWF0aW9uSXNQbGF5
aW5nKCptb2RlbElkZW50aWZpZXIsIGlzUGxheWluZyksIFdURk1vdmUocmVtb3RlQ29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aXNM
b29waW5nQW5pbWF0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29s
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvIG1vZGVsSWRlbnRpZmllciA9
IHRoaXMtPm1vZGVsSWRlbnRpZmllcigpOworICAgIGlmICghbW9kZWxJZGVudGlmaWVyKSB7Cisg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvKiBzdHJvbmdQYWdlID0gbV9wYWdlLmdldCgpOworICAgIGlmICgh
c3Ryb25nUGFnZSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxib29sLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+IHJlbW90ZUNvbXBsZXRpb25IYW5k
bGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChF
eHBlY3RlZDxib29sLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCpyZXN1bHQpOworICAgIH07CisKKyAgICBzdHJvbmdQYWdlLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50SXNMb29w
aW5nQW5pbWF0aW9uKCptb2RlbElkZW50aWZpZXIpLCBXVEZNb3ZlKHJlbW90ZUNvbXBsZXRpb25I
YW5kbGVyKSk7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldElz
TG9vcGluZ0FuaW1hdGlvbihib29sIGlzTG9vcGluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gbW9kZWxJZGVu
dGlmaWVyID0gdGhpcy0+bW9kZWxJZGVudGlmaWVyKCk7CisgICAgaWYgKCFtb2RlbElkZW50aWZp
ZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAo
IXN0cm9uZ1BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gcmVt
b3RlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN1Y2Nlc3MpOworICAgIH07CisKKyAgICBzdHJvbmdQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50U2V0SXNMb29waW5n
QW5pbWF0aW9uKCptb2RlbElkZW50aWZpZXIsIGlzTG9vcGluZyksIFdURk1vdmUocmVtb3RlQ29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogfQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="469903"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>