Can't set different layouts for multiple monitors

Description of the new feature / enhancement
Can't set different layouts for multiple monitors
不能为多台显示器设置不同的布局
I set up different layouts for the two monitors:
我设置为两台显示器设置了不同的布局：

Looks like can only use one layout?

Scenario when this would be used?
The experience of multiple monitors needs to be improved
Supporting information
PowerToys version : 0.60.0

they have changed fancy zones to go off monitor ID or something of that nature, the result is if you have 2 monitors from the same brand that are the same model, they have 1 id and the layouts get applied to both at once

That would explain why my left and right monitors change at the same time. The problem though is that one is portrait and one is landscape, so the layouts don't really work this way.

I have the same issue. 2 monitors with same brand/model in landscape but can't set different layouts. Only started with PowerToys version 0.60.0

its in the release notes, in an attempt to fix one thing its introduced another issue

I have the same issue with v0.60.0

its in the release notes, in an attempt to fix one thing its introduced another issue

That's right, my two monitors are indeed the same brand that are the same model.
没错，我的两台显示的确是同品牌同型号的。

Current temporary solution:
当前临时解决方法：

Thank you for the report. We're preparing the fix. Can you please test the build with the fix mentioned here? https://github.com/microsoft/PowerToys/issues/19203#issuecomment-1180309517
Please keep discussion on that new issue as well. Thank you!
/dup of https://github.com/microsoft/PowerToys/issues/19203Thank you for the report. We're preparing the fix. Can you please test the build with the fix mentioned here? https://github.com/microsoft/PowerToys/issues/19203#issuecomment-1180309517
Please keep discussion on that new issue as well. Thank you!
/dup of https://github.com/microsoft/PowerToys/issues/19203


update travis ruby version

No checkboxes, this only affects travis.

#176 is the new PR for this to avoid the merge conflict


Does it support rloo_trainer of trl?

[rank0]: Traceback (most recent call last):
[rank0]:   File "/opt/tmp/nlp/wzh/LLM-Dojo/rlhf/rloo_train.py", line 167, in
[rank0]:     trainer.train()
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/trl/trainer/rloo_trainer.py", line 246, in train
[rank0]:     query_response, logits = generate(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/trl/trainer/utils.py", line 1102, in generate
[rank0]:     output = lm_backbone.generate(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/peft/peft_model.py", line 1491, in generate
[rank0]:     outputs = self.base_model.generate(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
[rank0]:     return func(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/transformers/generation/utils.py", line 1758, in generate
[rank0]:     result = self._sample(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/transformers/generation/utils.py", line 2397, in _sample
[rank0]:     outputs = self(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/models/llama.py", line 855, in _CausalLM_fast_forward
[rank0]:     outputs = self.model(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/models/llama.py", line 710, in LlamaModel_fast_forward
[rank0]:     layer_outputs = torch.utils.checkpoint.checkpoint(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/_compile.py", line 24, in inner
[rank0]:     return torch._dynamo.disable(fn, recursive)(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/_dynamo/eval_frame.py", line 451, in _fn
[rank0]:     return fn(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/_dynamo/external_utils.py", line 36, in inner
[rank0]:     return fn(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/utils/checkpoint.py", line 487, in checkpoint
[rank0]:     return CheckpointFunction.apply(function, preserve, *args)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/autograd/function.py", line 598, in apply
[rank0]:     return super().apply(*args, **kwargs)  # type: ignore[misc]
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/utils/checkpoint.py", line 262, in forward
[rank0]:     outputs = run_function(*args)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/models/llama.py", line 706, in custom_forward
[rank0]:     return module(*inputs, past_key_value, output_attentions, padding_mask = padding_mask)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/models/llama.py", line 453, in LlamaDecoderLayer_fast_forward
[rank0]:     hidden_states, self_attn_weights, present_key_value = self.self_attn(
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1532, in _wrapped_call_impl
[rank0]:     return self._call_impl(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1541, in _call_impl
[rank0]:     return forward_call(*args, **kwargs)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/models/llama.py", line 343, in LlamaAttention_fast_forward
[rank0]:     Q, K = inplace_rope_embedding(Q, K, cos, sin, position_ids)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/kernels/rope_embedding.py", line 178, in inplace_rope_embedding
[rank0]:     Q = Slow_RoPE_Embedding.apply(Q, cos, sin, position_ids)
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/torch/autograd/function.py", line 598, in apply
[rank0]:     return super().apply(*args, **kwargs)  # type: ignore[misc]
[rank0]:   File "/home/nlp/miniconda3/envs/codellm2/lib/python3.9/site-packages/unsloth/kernels/rope_embedding.py", line 154, in forward
[rank0]:     Q *= cos
[rank0]: RuntimeError: The size of tensor a (32) must match the size of tensor b (64) at non-singleton dimension 1

When I used RLOOTrainer in the trl library for rlhf, I loaded the policy model and ref_policy model through unsloth, but it reported the above error, so I would like to ask if it is not supported?

And I tried the same thing on the DPOV2Trainer and got the same error.
But the script runs when i do not use unsloth.

Hmmm its probably because these trainers need generation steps - hmm I'll have to see

And I tried the same thing on the DPOV2Trainer and got the same error. But the script runs when i do not use unsloth.

Hey, Just wondering if RLOOTrainer if this issue fixed or not? Here also want to use RLOOTrainer on unsloth model..

Sorry I never got to it :(

+1 I am trying to implement GRPO for the TRL library. The model fails in generation phase with the following error:
RuntimeError: Unsloth: You must call `FastLanguageModel.for_inference(model)` before doing inference for Unsloth models.

Is there a way to run this without the for_inference

@saisurbehera No sorry currently not - you can add a hook to enable it, then disable it


Updated _docker-compose plugin to 1.5.0. (current version is 0.1.0)

I've updated _docker-compose to the latest version (from 0.1.0 to  1.5.0).
I've also fixed the readme file to redirect to the official page. The url in the file was good however the generated markdown link was not working.
Closes #4311
Closes #4659

This PR is not a duplicate of #4311 and #4659. Even if they updates the current _docker-compose file from version 0.1.0 to 1.5.0 the content is not the same.

Thanks!


Beta v4 instructions need to be customized for MacOS

Description
I dont see the iframeRPC on a mac. A better tutorial is needed for macos users.
Device (optional)
No response
Additional information
No response

Update: I got it working. There were two areas of struggle: 1) the configuration form contains two methods with no explanation of which to use (sign in with google account and (field test). When the first method didn't work I tried the 2nd method only to have to go back to the first. 2) the configuration form has no label... its not crystal clear that the issueToken goes in the first field and that the cookie goes in the second field. I assumed this correctly, but it would be nice if they were labeled.
Regarding mac users: For some reason filtering for IssueToken didn't show anything at all... then I open my macbook a day later after leaving the page open and it finally does show two iFramerpc entrities. Letting it sit, seemed to make this data show up. Why did it take so long?
The instructions say to first filter for issueToken and then to filter for oauth2/iframe but on a mac these show the exact same data, so its a superfluous instruction that can be eliminated. Coupled with no data showing at all initially only to appear hours late, it added to the confusion.

Thanks @BlackRockCity. I hope to have some more time for this, so thanks for your clear feedback.
Regarding your first question; in HACS you can select "Show beta versions" in the dialog, to install the beta version. Hopefully this hassle with needing a beta version will be gone soon. The fields should be labeled now, but I have seen issues with no labels with other people that had an older version. If you install the latest beta version (manually) this should work.

I have now tried to update the instructions on how to retrieve issue_token and cookies.
It is mainly incorporation of #272, and a bit of formatting and checking menu names etc.
Furthermore I added a description to the account selection step.
I am not really sure myself, but seems to be production and test. So, basically saying to use the default one.
The link in the second step is fine (points to beta branch though).
I do not have a Mac available, so I cannot check the findings reported there.
The menu layout could be different and searching in dev. tools, but the core browser functionality should hopefully be the same.
Regarding issueToken and oauth2/iframe (last entry) finding the same request: I do see this, but only if there was a session already. If clearing cookies or using Incognito it is two different requests. Therefore I kept this.
The issueToken request gets the same cookies as input/request, but updates one of them which can be found under response. Rather than user having to merge request and response cookies, oauth2/iframe (last entry) finds the subsequent request where most recent cookies can be found under request cookies.
Based on my own experience, I would just recommend using Incognito now there is a description on how to work around the third-party cookie issue.

I do not have a Mac, so I cannot try it out.
But in my experience (on Windows and ChromeOS), if a user is already logged in, then the two searches will find the exact same request in dev. tools.
With cleaned cookies or Incognito, it finds two different requests.
issueToken do have many (if not all) of the same cookies, but it updates one in response.
My experience when not properly cleaned, is that it led to reduced session lifetime.
If searching in dev. tools works differently, one possibility might be to search for "accounts.google.com" (hostname). It seems the second-last will be the issueToken, and last one the cookies.

I was able to enable the beta downloads by going to HACS and clicking the nest card then choosing redownload from the ... menu and then activating beta versions.
the fields were now labeled. 4.0b4
I had a better time doing this under Microsoft Edge Browser for MacOS.
Opened a New private browsing window.
loaded home.nest.com
logged in.
found the network tab and checked preserve log
signed out.
… > more tools > application > storage tab (on the left) > clear site data
logged in again.
followed these instructions to get the issueToken request url and oauth/iframe and request header cookie and the instructions worked:
https://community.home-assistant.io/t/integrating-nest-protect-smoke-alarms/603253
now i will see how long the cookie lasts


Basic styling on the Mappers toggle.

I think your instincts were right with respect to general placement. This PR just tweaks things a bit.
Cargo probably needs more significant design love to really get this in the right place.. but that's more of a conversation about what Cargo should be in the future.

Floated the mappers toggle to the top of the nav, primarily with the concern of real estate on Mobile.
Wrapped toggle in a label for semantics and a11y
Changed the label name to "Community Map"... dunno if there is any internal convo around naming on things, but this felt more publicly accessible than "Mappers"

Desktop:

Mobile:

This is amazing, thank you @jthiller.


URL cache host part hash

Resolves #95
Will create cached file path like:
${cacheLocation}/192_168_0_1_8000_hurirxv8nfp3mqail1ggsztxraimpjxpla18da86p56k916pd5/764df17y59r19mdug2eoi2e4esv1u02ygdwhiur1l965swfdr4.jpg
Human readable host and resolves very rare file path conflicts.

@chrusart Thanks! :)


Ensure that asset retargeting fails on non-zero Unity exit codes.

We've already seen a number of cases where we have failed to push NuGet packages, because of classes that were introduced with no namespaces. These show up as an error in the asset retargeting step, but because we don't return the error code that Unity gives us, the rest of the build moves on (and then later shows a warning saying that "no nuget packages were pushed out")
This updates the build powershell script so that any break that would cause us to stop producing a nuget package would actually cause a build failure, rather than just a warning and slap on the wrist.

Are we able to do the same thing for the Unity app build steps?

Yes, though I hadn't done that because it's a little more complicated - though I guess not too complicated. There are a few other changes that need to be made (i.e. we still want to dump out the msbuild logs in the case that it's an msbuild case so that it's still debuggable).

/azp run mrtk_pr

/azp run mrtk_pr

/azp run mrtk_pr

It turns out, more things were broken, I have to fix those before I submit this.

/azp run mrtk_pr


Sorting options for suggestion list?

Any plans to add functionality for controlling sorting of suggestions?

@bricejlin Suggestions ordering is completely up to the user. Autosuggest has no opinion on this. You pass it suggestions which are sorted the way you want them, and Autosuggest will display them in the same order. Does this makes sense?

@moroshko Ah i see. thanks!


fix kustomize patches for skiprange and replaces

Updates #145

/cherry-pick release-4.12

/lgtm


feat: Allow tokenizer to be used to count tokens and limit tokens

Right now the tokenizer is private, so it can't be used to count the number of tokens in a passage or to chunk passages to a specific token limit.
This PR moves towards resolving that.

Thank you.


PLAT-143536: Added screenshot tests for FlexiblePopupPanles

Checklist

[X] I have read and understand the contribution guide
[ ] A CHANGELOG entry is included
[ ] At least one test case is included for this feature or bug fix
[X] Documentation was added or is not needed
[ ] This is an API breaking change

Issue Resolved / Feature Added
Changed the tests from FlexiblePopupPanels to include all the features supported by sampler.
Resolution
I added tests for scrimType: translucent and added tests for props: noCloseButton, nextButtonVisibility, prevButtonVisibility.
Additional Considerations
Links
PLAT-143536
Comments

LGTM


1823825 | Message fixes | Address validation issues | 21

This PR is for user story 1823825.
Fixed an issue with missing table headers.
If these changes are not appropriate, please let me know. I'm only trying to clean up validation issues in this repo. So I can easily close this PR or modify it in whatever way is best for the content.

Docs Build status updates of commit b22fc61:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

biztalk/core/single-sign-on-event-10569.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10570.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10571.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10572.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10573.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10574.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10575.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10576.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10577.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10578.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10579.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10580.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10581.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10582.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10583.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10584.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10585.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10586.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10587.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10588.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10589.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10590.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10591.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10592.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10593.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10594.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10595.md
:white_check_mark:Succeeded
View

biztalk/core/single-sign-on-event-10596.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

@MandiOhlinger This PR is ready for merge.


Iterate analysis over all available tags for a given image digest

This PR addresses the issue of failing analysis for an image that has multiple tag references. If one of the tags in accessible, the analysis for that specific tag fails as expected. However analysis of a different tag that is accessible may also fail. This happens because

the tag reference is not maintained in the analysis request
analyzers simply try the 1st tag in the list of tags to pull the image

For instance image x was analyzed with tag y first followed by tag z. After deleting tag y from the registry, force analyzing tag y fails as expected. Force analyzing tag z also fails as the analyzers attempt to pull the image with tag y
Solution: analyzers should iterate through the list of all available tags until they can successfully pull the image and analyze it

LGTM, it would be great to have some unit tests on this, but I know the complexity of these methods makes that difficult until we can refactor.

Yep, I tried to split things up but that means a high potential for regression :( I want an automated end-to-end test for this specific use case


Translator is not expanding mappings when unions of different FHIR resources occur in CQL

The Translator is not expanding mappings when unions of different FHIR resources occur in CQL. Refer to https://github.com/projecttacoma/fqm-execution/issues/191.

Minimal replication CQL:
library UnionTest

using QICore version '4.1.1'

include FHIRHelpers version '4.1.000'

context Patient

define "Union of Different Types":
  ([Procedure] union [ServiceRequest]) R
    return {
      performed: R.performed,
      authoredOn: R.authoredOn
    }

Fixed in 2.7.0

@brynrhodes
After updating the translator to 2.7, the unintended behavior described in https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1377 is still present.


More detail Tutorial:  How-to: Configure password writeback

https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-sspr-writeback#configuring-password-writeback
Seems more details.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: cefae94a-c39e-bee5-ae8b-a02d62559ba8
Version Independent ID: bdc46b39-5eea-7239-a1c0-69473ecf3f92
Content: Azure AD enable password writeback
Content Source: articles/active-directory/authentication/tutorial-enable-writeback.md
Service: active-directory
Sub-service: authentication
GitHub Login: @MicrosoftGuyJFlo
Microsoft Alias: joflore

@TiloGit Thank you for your query. We will investigate and update this thread accordingly.

@TiloGit, Can you be more specific in the ask, so that we can help you better?

just suggest to link or merge these topics as the other How-To has more details.
I didn't manage to configure it with this Tutorial but with the How-To.

@MicrosoftGuyJFlo, Can you please look into this ask of customer.

Will work on this as I update the docs in the future.

#please-close


The following command works as intended:
$ go build -a github.com/elastic/go-elasticsearch/v8/typedapi/types

However if you use any -toolexec value, it suddenly fails on Windows:
$ go build -toolexec="D:\\a\\orchestrion\\orchestrion\\bin\\orchestrion.exe" -a github.com/elastic/go-elasticsearch/v8/typedapi/types
fork/exec D:\\a\\orchestrion\\orchestrion\\bin\\orchestrion.exe: The filename or extension is too long.

This is because the github.com/elastic/go-elasticsearch/v8/typedapi/types package contains a metric ton of files, and results in an excessively long command line for Windows.
What did you see happen?
What we observe is that when there is no -toolexec the Windows arguments size limit (of 32KiB) is "worked around" by passing an @args-file value that contains all the arguments instead of passing the arguments list itself directly...
Unfortunately, the use of -toolexec appears to disable this mechanism, making it impossible to build packages with very large amounts of files in them on Windows.
I have verified this behavior using strace on a Linux machine... I expect the same behavior happens on Windows as well and explains our issue here...
What did you expect to see?
I expect a package that successfully builds without -toolexec to also be build-able with -toolexec, and for the -toolexec tool to actually also receive the arguments file stand-in when appropriate.

Related Issues and Documentation

os/exec: Combined number of symbols in file paths are causing error if it exceeds ~2^15 symbols combined. #21145 (closed)
syscall: Go Build Fails on Windows With Long Paths #18468 (closed)
cmd/go, cmd/link: use Windows response files for gcc/g++ to avoid arg length limits #28372
cmd/link: command line too long running gcc #60183 (closed)
Go build fails with: "argument list too long" #38569 (closed)
Build Issue on Windows #44782 (closed)
cmd/go: build produces a non-64bit version on Windows #26899 (closed)

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

As suggested by @gabyhelp, this is actually very much related to (although this has the added characteristic of being an apparent -toolexec break out of the response file feature):

https://github.com/golang/go/issues/18468
https://github.com/golang/go/issues/28372
https://github.com/golang/go/issues/60183
https://github.com/golang/go/issues/38569
https://github.com/golang/go/issues/44782

Also, the culprit is likely this code path:
https://github.com/golang/go/blob/e5e552b816793f2b5729744c27995cce12baf52e/src/cmd/go/internal/work/exec.go#L3431-L3435
Since in our case, the prog ends up being the -toolexec executable...

cc @matloob @samthanawalla

It's fair to say that most Unix programs do not understand the @ syntax for response files.  So it wouldn't be appropriate to use it by default.
Do most Windows programs understand that syntax?

I agree - this could be surprising to a bunch of tools; although... On Windows specifically, if the CLI arguments exceed 32KiB, then the command will basically just not run... It'll just fail differently if you pass a response file instead of the arguments list in that case...
But regardless; I think it would be a-okay (to me at least) to either have:

Another CLI flag to signal the -toolexec command understands response files
A "special" syntax in -toolexec that signifies it understands response files

It might also be relevant to document the syntax of these files publicly so that it feels less like copying CLI implementation details (apparently it supports line continuations, the response file can contain further response files, etc...)

I will add that today, if the -toolexec tool is named compile, link, cgo, asm, or cover, it'll receive the response file (and possibly crash if it does not support this). I have been able to verify this with orchestrion today.

In addition to this, I would say that today, any change to any tool's arguments could be seen as a breaking change for -toolexec tools that process said arguments... I think the contract of -toolexec is that it either must not care about the arguments being passed (just forwarding them as-is), or it must be ready to deal with anything the tool may receive; including a response file.
From this perspective, whether sending the @response-file arguments via -toolexec tools is a breaking change or not is somewhat debatable.

I think the contract of -toolexec is that it either must not care about the arguments being passed (just forwarding them as-is), or it must be ready to deal with anything the tool may receive; including a response file.

That is what I have been assuming with my own development of toolexec tools.
FWIW I already wrote generic response file support in Go at https://pkg.go.dev/mvdan.cc/responsefile, and you're welcome to reuse it as well.

I think the contract of -toolexec is that it either must not care about the arguments being passed (just forwarding them as-is), or it must be ready to deal with anything the tool may receive; including a response file.

That is what I have been assuming with my own development of toolexec tools.

I would have made the same assumption.
I'm wondering if there are any tools that already exist that examine the arguments passed in used in workflows that would break if we decided to start passing in response file arguments?

I don't think any toolexec tools written today would handle @-arg response files, because they simply have never been supplied before. But those same tools are already pretty broken today when very many files are being built at once, e.g. https://github.com/burrowers/garble/issues/572, so I think we need to cross this bridge sooner or later.

Ah. This seems reasonable to me.


sysfs export/unexport don't appear to be multithreaded!

Output from gpio-sysfs-example:
$ ./gpio-sysfs-example readEdge --edge Rising --period 1000000  "Pin 47" "Pin 48"
gpio-sysfs-example: /sys/class/gpio/export: openFile: resource busy (file is locked)
Output: High
Output: Low
Output: High
^C

Inserting a delay between the start of the background (input) thread and the foreground (output) thread fixes the problem. This indicates to me that, somehow, the "export" (and presumably "unexport") sysfs control files are not thread-safe!
I guess this means we'll need to put handlers, and possibly timeouts, around the 'exportPin' and 'unexportPin' functions.

(I suspect the reason this doesn't manifest itself in the gpio-example program is that the interpreter overhead adds enough delay between the start of the two eDSL programs.)

No, this is due to Haskell's policy of file I/O with multiple readers/one writer. It obviously doesn't apply in a case like this, so I'll have to special-case these files and any other global shared resources in sysfs.


Notes editable by someone other than originator (permissions)

I think that when we originally made notes editable, the only person who could edit the notes was the person who originally wrote it.   I heard from a few people that they can now edit other people's notes.  It's not urgent, but don't know if it's a permission issue or something that got lost in one of the updates.

Hey there @snoopyuri. I just read through the relevant code here. We don't limit it so that only the original note-writer can edit a note. But we do preserve the entire edit history so that we have the full log of who edited what. One future path would be to surface more of that information for users, so that it shows a little history or a summary like "Edited by Uri, Kevin, Judy, and Justin."

we did this!


find a way to cash people out who just want out

Having announced Gratipay 2.0, we're hearing from some folks that, understandably, just want to cash out and close their Gratipay account:
https://gratipay.freshdesk.com/helpdesk/tickets/2103
https://gratipay.freshdesk.com/helpdesk/tickets/2147
https://gratipay.freshdesk.com/helpdesk/tickets/2161
Today our options for them are:

Apply for a team.
Wait until August when we refund all remaining Gratipay 1.0 balances.

Neither of these are awesome.  The second is dumb because we're making them wait a long time, and we're forcing them to refund their balance.  Refunding balances is better then letting balances sit in limbo, but obviously less desirable than paying them out.
Can we add a disbursement method to account closing that involves accepting a short agreement that the funds were received legitimately? I've made a private ticket to discuss this with @copiesofcopies.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/17600432-find-a-way-to-cash-people-out-who-just-want-out?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F85909&utm_medium=issues&utm_source=github).

If we can't figure this out, then I'm not sure how we're able to pay out balances received under Gratipay 1.0 even to people who migrate their tips to Gratipay 2.0 Teams.

For (1) does this mean that one would be allowed to donate what is on an individual account to the new team account?

@kytrinyx Team accounts don't carry a balance, only ~user accounts do. See https://github.com/gratipay/gratipay.com/issues/3399#issuecomment-101470445 for a rough sketch (bottom of the comment). Sorry it's confusing, we need some better diagrams. :/

Teams have 1 owner and 0+ members.
Owners and members are users.
Users pay teams.
Teams distribute to members, with whatever is left going to the owner.

I am sorry, I still don't understand how this works. I have a team account and an individual account. They both carry a balance. Or at least, I have received donations to both, and was patiently letting money accumulate in them, and when I wanted to withdraw the funds, I was unable to.

I have a team account and an individual account.

Okay, sorry, I'm probably confused ... can you link to the two accounts?

https://gratipay.com/~kytrinyx/
https://gratipay.com/~exercism_io/
The exercism_io account carries a balance of nearly $35 dollars. The kytrinyx account had been accumulating a balance for 2 years. Last week I attempted to withdraw it. The profile page says that my balance is 0. The history page says that the withdrawal succeeded, but I received email personally that said that the withdrawal has been canceled. So since I have not received that money, then the individual account should carry a balance.

@kytrinyx Okay, gotcha. The existence of the ~exercism_io account is what I was missing, sorry. Yes, your ~kytrinyx account is affected by #3453, sorry. :-( Once we finish cleaning up #3453, your ~kytrinyx history page will show a balance again.
Users vs. Teams
In Gratipay 2.0 terms, both ~kytrinyx and ~exercism_io are user accounts, and are distinct from Gratipay teams. Here's an explanation of the differences:

User Accounts
can be used to sign in
can add money (via credit card, etc.)
can withdraw money (via bank account, etc.)
can carry a balance, in some limited circumstances
can pay Teams
can receive payroll from Teams
[i.e.,] can be an owner or member of a Team
cannot receive payments directly from other Users
Teams
can receive payments from Users
can distribute payroll to Users
cannot be used to sign in
cannot add or withdraw funds
cannot carry a balance

I'm not saying this ontology is perfect, but it's the reality today, and I don't think it's terrible (especially considering that we came up with it under duress). Hopefully in the future we can at least find better ways to communicate it, and if we really need to revise the ontology again, we can.
Closing Accounts

They both carry a balance.

Both the ~kytrinyx and ~exercism_io user accounts carry a balance, yes. I believe your goal is to withdraw the balance from both accounts, and close both of them. Yes?
Once we land #3433 and #3461, here's how you will be able to withdraw the two balances and close the two user accounts, via an intermediary Exercism "team" (in the Gratipay 2.0 meaning of the term):

Sign in to Gratipay as the ~exercism_io user (i.e., using your exercism_io Twitter account).
Apply for a new team for Exercism. Since you're signed in as ~exercism_io, ~exercism_io will be the user account that is the "owner" of the Exercism "team."
Add the ~kytrinyx user as a member of the payroll for the Exercism team (pending #3433).
Close the ~kytrinyx user account (pending #3461). Because ~kytrinyx is now a "member" of a "team" (namely, Exercism), we will allow you to withdraw your balance during the account closing process.
Close the ~exercism_io user account (pending #3461). Because ~exercism_io is now an "owner" of a "team" (namely, Exercism), we will allow you to withdraw your balance during the account closing process.

Conclusion
That's the best I have to offer you today. This ticket is about finding a better option for people in your situation, but honestly I'm not sure there is one, since we need to vet accounts somehow before we pay them out and we've already got the teams infrastructure in place for doing that.

Sent on FD3147:

I honestly just want to clear the account and close it, is there any easy way of doing this?

No. I'm sorry. :-(

The problem is that we've stopped processing payments under our old terms of service (and we've communicated as much to financial regulators). Because historically we've allowed you to pool money on Gratipay, the money currently in your Gratipay balance is in a half-processed state (btw, we no longer allow pooling on Gratipay 2.0). We certainly don't want to keep this money in limbo, so we have two basic options for resolving the half-processed state this money is in:

Refund it to your supporters. This amounts to backing out a set of half-processed transactions.
Release it to you. This amounts to completing a set of half-processed transactions.

For legal reasons, we now need you to explicitly agree that the transactions we're processing on your behalf are payments for goods and services. If you're able to agree to this, then we're comfortable considering the half-processed past transactions represented by your current Gratipay balance to come under the same agreement, and to release the funds to you. Our new team-centric terms of service are the agreement we have in place for this.

We're looking at the possibility of a less hoop-jumpy option for people in your situation; here is the public side of that conversation. If you can't agree to this (or otherwise don't take any action), then the worst-case scenario is that we'll refund your balance back to your supporters. We'll be doing that for all remaining Gratipay 1.0 balances in August.

Sorry I don't have an easier answer for you on this, []. :-( Hopefully this at least explains where we're coming from. Happy to answer any further questions ...

Thanks so much for clarifying. I don't need a better option than this. Yes, there are hoops, but I understand that the whole situation is difficult.
I did not understand the distinction between the exercism.io user account which is listed as a "team" in the profile page, and an actual team.
It was also unclear to me previously that users could withdraw money, provided that this was a payout via a team. This now makes sense, as well.

Good news! We can cash people out who "just want out" on a case-by-case basis. We just need to manually verify that they were using their Gratipay profile to accept payments for a legitimate product or service. Let's implement that as an additional final disbursement option for account closing (#3461).

Thanks so much for clarifying. I don't need a better option than this.

@kytrinyx Cool, thank you. Since you've already started down the "make a Team and then close it" path let's stay on that track.

OK, cool. I'll just wait for confirmation that the team has been verified, then I'll go through the next steps.

@whit537 I couldn't figure out how to add members to the payroll of a team. Would you point me in the right direction, please?

@kytrinyx Sorry, we're trying to bring that back for today but it's not quite landed yet: https://github.com/gratipay/gratipay.com/issues/3433. :-(

I'm thinking we should implement this with an admin-only form off the history page similar to record-an-exchange, that does the payout and records the exchange. It should require a link to a support or GitHub ticket as documentation, which it puts in the exchange note. Hmmm ... for bank accounts we can start a payout synchronously, but what about for PayPal?

@whit537 Ah, I missed that. I'll check over the next few days to see if that's in place.
I could try adding a bank account for the ~exercism_io user, but I am not sure I could verify the identity in any way.

@whit537 What's the status on being able to add members to teams? If this is going to be a while, could I just get the 1.0 balance closed out?

@kytrinyx et al. We made the code changes to support this in #3535 and #3542. I'm going through and whitelisting everyone on this ticket now. If you have a bank or PayPal attached you should see a payout today, or the next payment cycle after you add one on your Gratipay settings page. I'm also following up in email ...

Though actually, @kytrinyx, we've already paid you out since you went through the team migration process. I'll follow up with you again when #3461 is done ...

Yessssssss. Notified everyone listed in the description. Ready to handle new cases as they arise.

@whit537 Yes, I go the payout for the ~kytrinyx account, but not for the ~exercism_io one.

@kytrinyx Okay, I've cleared ~exercism_io for payout next week.

Thanks!

Could all the money that has accumulated in my account (gratipay.com/~bearbin) be withdrawn to my paypal? It was all to do with the MCServer (now Cuberite) project.

@bearbin All cleared, @bearbin. Watch for that payout this Thursday! :-)


When will the code be publicly available?

Thanks for your great work. Just wondering is there any plan for code public?
Also, before code are publicly available, is there any suggests for pretrain bert on TTS tasks?

I'm currently testing the code for StyleTTS-VC, once it is done I'll make the training pipeline available.

Thanks for reply. Looking forward to it. :)


Owner must be of type Window exception, on Android only

Hi,
I'm using this package successfully on both Windows & Android to show both "open" and "save" dialogs from my main viewmodel:
var result = await _dialogService.ShowOpenFileDialogAsync(this, settings); // works
var result = await _dialogService.ShowSaveFileDialogAsync(this, settings); // works

However, the following only works on Windows:
await _dialogService.ShowMessageBoxAsync(this, "Test Notification", "Error", MessageBoxButton.Ok);

The same code on Android throws System.InvalidCastException: 'Owner must be of type Window.' If I set a breakpoint right before, I can confirm that the "this" object is the ViewModel - same as both of the calls above. What might I be missing?
Thanks in advance

...Oh wait, I think I see in the main docs that messageboxes are supported on desktop only. Is that the case?
If so, can close this issue - just with the suggestion that it throw a more specific/clear error message ("Messageboxes are only supported on desktop"), if that's the case?

Got it, thanks. I suppose then that this is just a suggestion for a clearer error - System.InvalidCastException: 'Owner must be of type Window.' is pretty unclear/ambiguous, it'd probably be lower friction for new users if it threw something with a specific message, i.e. Avalonia.MessageBox is only supported on Desktop - use Avalonia.Fluent or Avalonia.DialogHost to support mobile.
...Or better yet, rather than having the default usage in the docs be Avalonia.MessageBox, just start with one of the options that does support all platforms out of the box.

Do note that Avalonia.MessageBox also supports Popup mode, which should work on Android

Then in that case, perhaps that could be the sample code. Or the existing sample code to have a note: "This sample code isn't supported on Android - if you want to support Android, it should be changed as follows"

This should do the trick..
public static IDialogFactory AddMessageBox(this IDialogFactory factory, MessageBoxMode mode = MessageBoxMode.Window)
{
    if (Application.Current?.ApplicationLifetime is ISingleViewApplicationLifetime && mode == MessageBoxMode.Window)
    {
        throw new NotSupportedException("Avalonia.MessageBox with mode=Window is only supported in Desktop applications. Consider using mode=Popup or a different MessageBox implementation.");
    }
    return new MessageBoxDialogFactory(factory)
    {
        Mode = mode
    };
}


论文pdf

麻烦可以提供一下论文pdf吗，非常感谢！

The paper has already been released on Arxiv. Thanks for your attention.


Update wave_attenuation.py

The previous code can only display one rl vehicle, this way it can display all rl vehicles and their leader and follower vehicles, which is in accordance to the paper.

Pull request information

Status: ? (ready to merge / in development)
Kind of changes: ? (bug fix / new feature / documentation...)
Related PR or issue: ? (optional)

Description

? (general description)

Hi, can you make sure this passes the test pydocstyle --convention numpy before we review this? Thanks for the PR!

Sorry, i am not quite familiar with:pydocstyle --convention numpy, but i am sure this can run successfully.

Hi, so we use pydoc to enforce rules on our documentation. You can run it locally by doing:
pip install pydocstyle pydocstyle --convention numpy
and then fixing the lines it complains about.


Static Text is not identical to question text font size and bold.

Using static text "question" the text is smaller than normal question font size. The text is not bold as compared to questions text which is bold.
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Additional context
Add any other context or screenshots about the feature request here.
Done when
What conditions need to be met before this issue can be closed?

[celebrate]     Jimenez, Miguel reacted to your message:

From: Swathi Murthi @.>
Sent: Thursday, August 31, 2023 9:15:01 PM
To: civiform/civiform @.>
Cc: Jimenez, Miguel @.>; Author @.>
Subject: Re: [civiform/civiform] Static Text is not identical to question text font size and bold. (Issue #5296)
CAUTION: External Email
Closed #5296https://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31321b84-4544474f5631-40ba7efa243002c2&q=1&e=4b9cfb8d-8dda-4604-9ee1-eea3375b3eb6&u=https%3A%2F%2Fgithub.com%2Fciviform%2Fciviform%2Fissues%2F5296 as completed via #5495https://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31321b84-4544474f5631-fc1b0e4f449a2a87&q=1&e=4b9cfb8d-8dda-4604-9ee1-eea3375b3eb6&u=https%3A%2F%2Fgithub.com%2Fciviform%2Fciviform%2Fpull%2F5495.
—
Reply to this email directly, view it on GitHubhttps://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31321b84-4544474f5631-67f804b169069660&q=1&e=4b9cfb8d-8dda-4604-9ee1-eea3375b3eb6&u=https%3A%2F%2Fgithub.com%2Fciviform%2Fciviform%2Fissues%2F5296%23event-10250225930, or unsubscribehttps://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31321b84-4544474f5631-c657de0b06e64fe3&q=1&e=4b9cfb8d-8dda-4604-9ee1-eea3375b3eb6&u=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FA6DPYOI577J7QAVZAYHAYH3XYD5FLANCNFSM6AAAAAA2XMSJYY.
You are receiving this because you authored the thread.Message ID: @.***>


Dynamics 365 Channel Integration Framework: Search and open multiple records not described in docs

The example shows how to search through multiple records but not how to display the results.
Is there a direct way to open multiple records through this API? Should "renderSearchPage()" be used? Description in documentation is not clear.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 680b62cb-762c-79bf-cf9d-35250bf7b5a7
Version Independent ID: fe9a0bb6-5775-6fb5-ff6f-d35b8754e816
Content: searchAndOpenRecords (JavaScript API Reference) for Channel Integration Framework (CIF) in Dynamics 365
Content Source: ce/developer/channel-integration-framework/reference/microsoft-ciframework/searchAndOpenRecords.md
Service: dynamics-365-cross-app
GitHub Login: @kabala123
Microsoft Alias: kabala

@zupermann : Thanks for reaching out to us.
Please review the remarks section of the topic for the following information.
When you set searchOnly as true, the contact is only searched to the get results as a promise object, and the contact isn't opened. Set searchOnly as true when the search displays a list of records based on the search context.
When you set searchOnly as false, the contact is searched and opened. Set the searchOnly as false when you want the search to display a single record based on the search context. Set false to open search page if the search result has multiple records and auto populate the search page with the tag value mentioned when search field is used in queryParmeters.

@kabala123 Thank you for your response.
I read carefully the note, but still I have the question: how to open (through this API) multiple records?
As an example I am trying to open all contacts with firstname "John".
For this, I first call:
Microsoft.CIFramework.searchAndOpenRecords('contact', "?$filter=firstname eq 'John'", false)
If there are multiple John contacts, regardless if I set searchOnly to true or false, I will get the following empty search page (nothing is populated in the search field, and no results are displayed):

I am not sure what you mean when you say

Set false to open search page if the search result has multiple records and auto populate the search page with the tag value mentioned when search field is used in queryParmeters.

Our query parameters are these:
"?$filter=firstname eq 'John'"
What tag should be used? How to pass it to the search page? It seems that the search page does not support complex odata queries.
Regards,
George

@zupermann : I have reported your issue with the internal team. I will get back as soon as I have an answer. Thanks for keeping your patience and understanding us.
Regards,
Karthik

@kabala123 any news on this item?
Regards,
George

@zupermann : I'm trying rope in a internal engineer who can directly engage and help you. I will revert on this asap.
Thanks.

@zupermann : what is the CRM and CIF version you are using.  I heard back from the PG that there is an defect and a fix was released. Would you be able to confirm the versions?

@kabala123 Thank you for the response.
We are using
-Dynamics 365 9.0
-CIF <IP_ADDRESS>
Dynamics 365 Administration Center shows in "Instances tab" only 9.0 (no other minor/build number).

Basically there are 2 issues revealed in this ticket:

one bug (which might be resolved): when there are multiple results, and "searchOnly" parameter is set to true, an empty search page is poped. (same happens when "searchOnly" is false, by the way)
one documentation issue: it is not described how multiple search records may be displayed. (using search page and a tag is not possible because odata complex queries are not allowed in the search page)

@zupermann : For the first bullet, I guess this is a product bug. For the second, we can work around to improve the documentation.

@kabala123 Thank you for response and for your patience.
Do we expect a documentation update to explain how to display multiple records results? Is this even possible under present API?

@zupermann : Yes, we will collaborate with the product group and improve this documentation and notify you to verify the your scenario.

@zupermann When a search using searchAndOpenRecords API returns multiple records, they are all listed in the search results page that opens up.
Please check these two things -

There are records that have firstname as John.
You can use $search parameter to pre-populate the search page with the passed query string.

You can open multiple records of the same entity type but currently, it is not possible to open multiple records of different entity types using just one query.
Hope this answers your question.

Hi @susikka . Thank for your reply.

We do have multiple contacts with firstname John.
Do we have any doc on how to use $search parameter? I guess this is not standard odata query, but you have a custom odata implementation? Should the following query string work? "$search=firstname eq 'John'"

@zupermann Thanks for clarifying.
We are in process of creating documentation that shows how $search can be used to pass a query string. Until then, you can use this example -
var searchname = "John";

Microsoft.CIFramework.searchAndOpenRecords("account", "?$select=name,telephone1&$filter=name eq '" + `${searchname}` + "'" + "&$search=" + `${searchname}`, false).then(
                function success(result) {
                    res = JSON.parse(result);
                    // Display the name and telephone number of the retrieved Account record on the console
                    console.log(`Record values: Name: ${res[0].name}, Telephone number: ${res[0].telephone1}`);
                },
                function (error) {
                    console.log(error.message);
                }
);

More info on $search: https://www.odata.org/getting-started/basic-tutorial/#search.
Please let me know if this helps.

Closing this issue; please let me know if you need any more help with this.


⚠ PostgreSQL has degraded performance

In bb1c7bf, PostgreSQL (https://news.ycombinator.com) experienced degraded performance:

HTTP code: 200
Response time: 5401 ms

Resolved: PostgreSQL performance has improved in e9d9eea after 5 minutes.


Master Release: Update expo latest version. Visual bugs, ISession abtraction for wallet connect and antelope(minus event listener and login)

This PR contains:
[ ] Upgrade to latest version of expo#1232
[ ] ISession abstraction implmentation
[ ] ISession for Antelope (minus event listeners and login)https://github.com/Tonomy-Foundation/Tonomy-ID/issues/1238
[ ] ISession for Wallet Connect
[ ] Modify send assests/ sign transaction to use the abstraction
[ ] Visual bugs#1230

:tada: This PR is included in version 0.141.0-development.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 0.141.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Clarify Ament vs Colcon

Minor cleanup

Thanks for the patch.
Since I applied some follow up changes I will wait until the end of the day before merging...


Separate analyze trial set method.

The std calculation should be done while reading the results or at least there should be an option to calculate it for any simulation setup.

https://github.com/kbsezginel/thermof/commit/592327750a64dfc5a2a2fedc1fb474d797b5502d adds std, max, and min calculation of k_est for trials. It's probably best to remove this function all together.

#15 removes analyze.py and closes this.


[Question] is it possible to change value of a textfield

is it possible to change a textfield value programmatically  ?
ex:
begin
mytxt = TextField()
@bind txt mytxt
end
and later  something like :
setproperty!(mytxt, :value , "az")
thanks

This is not possible. Try to avoid mutation in Pluto notebook, because mutation does not trigger reactivity.

Something kind of like this would be very useful however. For example, consider an interactive notebook with a few sliders for interesting parameters. It's nice to let the user play with sliders. In addition, it would be great to offer buttons that trigger setting specific configurations of the @bind variables. This could help eg to illustrate interesting properties of whatever is being simulated.


NPM install fails v0.6.x

consider changing
"node": "~0.4.12"
to
"node": ">=0.4.12"
in package.json since the ~ designates only v0.4.x

awesome, thanks.


CSubscriber create  dead lock

Problem Description
sometimes I found CSubscriber  create stucked,the stack is
Thread 20 (Thread 0xffff5cff5900 (LWP 4756)):
#0  futex_abstimed_wait (private=0, abstime=0x0, clockid=0, expected=2, futex_word=<optimized out>) at ../sysdeps/nptl/futex-internal.h:284
#1  __pthread_rwlock_wrlock_full (abstime=0x0, clockid=0, rwlock=0xffff74001d30) at pthread_rwlock_common.c:830
#2  __GI___pthread_rwlock_wrlock (rwlock=0xffff74001d30) at pthread_rwlock_wrlock.c:27
#3  0x0000ffffa8303da4 in eCAL::CSubGate::Register(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared
_ptr<eCAL::CDataReader> const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#4  0x0000ffffa8306b80 in eCAL::CSubscriber::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eCAL::SDat
aTypeInformation const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#5  0x0000ffffa8307540 in eCAL::CSubscriber::CSubscriber(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eCAL:
:SDataTypeInformation const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#6  0x0000ffffa83075b8 in eCAL::CSubscriber::CSubscriber(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () fr
om /lib/aarch64-linux-gnu/libecal_core.so.5
#7  0x0000ffffaa94bf28 in ?? ()
#8  0x0000ffff50001030 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 13 (Thread 0xffff90f8b900 (LWP 4749)):
#0  __lll_lock_wait (futex=futex@entry=0xffff984b2000, private=128) at lowlevellock.c:52
#1  0x0000ffffa9fd9cd8 in __GI___pthread_mutex_lock (mutex=0xffff984b2000) at pthread_mutex_lock.c:80
#2  0x0000ffffa82b59e4 in eCAL::CNamedMutexImpl::Lock(long) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#3  0x0000ffffa82b69b0 in eCAL::CMemoryFile::Create(char const*, bool, unsigned long, bool) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#4  0x0000ffffa82bacc8 in eCAL::CMemFileObserver::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::
__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#5  0x0000ffffa82bbf10 in eCAL::CMemFileThreadPool::ObserveFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&
, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std
::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, std::function<unsigned long (
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::
allocator<char> > const&, char const*, unsigned long, long long, long long, long long, unsigned long)> const&) () from /lib/aarch64-linux-gnu/libecal_
core.so.5
#6  0x0000ffffa831d888 in eCAL::CSHMReaderLayer::SetConnectionParameter(eCAL::SReaderLayerPar&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#7  0x0000ffffa830b608 in eCAL::CDataReader::ApplyLocLayerParameter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > co
nst&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, eCAL::pb::eTLayerType, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#8  0x0000ffffa8302d40 in eCAL::CSubGate::ApplyLocPubRegistration(eCAL::pb::Sample const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#9  0x0000ffffa832f9f0 in eCAL::CRegistrationReceiver::ApplySample(eCAL::pb::Sample const&) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#10 0x0000ffffa82d153c in eCAL::UDP::CSampleReceiver::Process(char const*, unsigned long) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#11 0x0000ffffa82d05a0 in void eCAL::CCallbackThread::callbackFunction<std::chrono::duration<long, std::ratio<1l, 1000l> > >(std::chrono::duration<lon
g, std::ratio<1l, 1000l> >) () from /lib/aarch64-linux-gnu/libecal_core.so.5
#12 0x0000ffffa86d8f9c in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6
#13 0x0000ffffa9fd7624 in start_thread (arg=0xffffa86d8f80) at pthread_create.c:477
#14 0x0000ffffa854662c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78

How to reproduce
I have no way to manually reproduce it.
How did you get eCAL?
Ubuntu PPA (apt-get)
Environment
eCAL Version: 5.13.0
eCAL System Information
; --------------------------------------------------
; NETWORK SETTINGS
; --------------------------------------------------
; network_enabled                  = true / false                  true  = all eCAL components communicate over network boundaries
;                                                                  false = local host only communication
;
; multicast_config_version         = v1 / v2                       UDP configuration version (Since eCAL 5.12.)
;                                                                    v1: default behavior
;                                                                    v2: new behavior, comes with a bit more intuitive handling regarding masking of the groups
; multicast_group                  = <IP_ADDRESS>                     UDP multicast group base
;                                                                  All registration and logging is sent on this address
; multicast_mask                   = <IP_ADDRESS>-<IP_ADDRESS>             v1: Mask maximum number of dynamic multicast group
;                                    <IP_ADDRESS>-<IP_ADDRESS>     v2: masks are now considered like routes masking
;
; multicast_port                   = 14000 + x                     UDP multicast port number (eCAL will use at least the 2 following port
;                                                                    numbers too, so please modify in steps of 10 (e.g. 1010, 1020 ...)
;
; multicast_ttl                    = 0 + x                         UDP ttl value, also known as hop limit, is used in determining
;                                                                    the intermediate routers being traversed towards the destination
;
; multicast_sndbuf                 = 1024 * x                      UDP send buffer in bytes
;
; multicast_rcvbuf                 = 1024 * x                      UDP receive buffer in bytes
;
; multicast_join_all_if            = false                         Linux specific setting to enable joining multicast groups on all network interfacs
;                                                                    independent of their link state. Enabling this makes sure that eCAL processes
;                                                                    receive data if they are started before network devices are up and running.
;
; bandwidth_max_udp                = -1                            UDP bandwidth limit for eCAL udp layer (-1 == unlimited)
;
; inproc_rec_enabled               = true                          Enable to receive on eCAL inner process layer
; shm_rec_enabled                  = true                          Enable to receive on eCAL shared memory layer
; udp_mc_rec_enabled               = true                          Enable to receive on eCAL udp multicast layer
;
; npcap_enabled                    = false                         Enable to receive UDP traffic with the Npcap based receiver
;
; tcp_pubsub_num_executor_reader   = 4                             Tcp_pubsub reader amount of threads that shall execute workload
; tcp_pubsub_num_executor_writer   = 4                             Tcp_pubsub writer amount of threads that shall execute workload
; tcp_pubsub_max_reconnections     = 5                             Tcp_pubsub reconnection attemps the session will try to reconnect in
;                                                                    case of an issue (a negative value means infinite reconnection attemps)
;
; host_group_name                  =                               Common host group name that enables interprocess mechanisms across
;                                                                    (virtual) host borders (e.g, Docker); by default equivalent to local host name
; --------------------------------------------------

[network]
network_enabled                    = false
multicast_config_version           = v1
multicast_group                    = <IP_ADDRESS>
multicast_mask                     = <IP_ADDRESS>
multicast_port                     = 14000
multicast_ttl                      = 2
multicast_sndbuf                   = 5242880
multicast_rcvbuf                   = 5242880

multicast_join_all_if              = false

bandwidth_max_udp                  = -1

inproc_rec_enabled                 = true
shm_rec_enabled                    = true
tcp_rec_enabled                    = true
udp_mc_rec_enabled                 = true

npcap_enabled                      = false

tcp_pubsub_num_executor_reader     = 4
tcp_pubsub_num_executor_writer     = 4
tcp_pubsub_max_reconnections       = 5

host_group_name                    =

; --------------------------------------------------
; COMMON SETTINGS
; --------------------------------------------------
; registration_timeout             = 60000                         Timeout for topic registration in ms (internal)
; registration_refresh             = 1000                          Topic registration refresh cylce (has to be smaller then registration timeout !)

; --------------------------------------------------
[common]
registration_timeout               = 60000
registration_refresh               = 10

; --------------------------------------------------
; TIME SETTINGS
; --------------------------------------------------
; timesync_module_rt               = "ecaltime-localtime"          Time synchronisation interface name (dynamic library)
;                                                                  The name will be extended with platform suffix (32|64), debug suffix (d) and platform extension (.dll|.so)
;
;                                                                  Available modules are:
;                                                                    - ecaltime-localtime    local system time without synchronization
;                                                                    - ecaltime-linuxptp     For PTP / gPTP synchronization over ethernet on Linux
;                                                                                (device configuration in ecaltime.ini)
;                                                                    - ecaltime-simtime      Simulation time as published by the eCAL Player.
; --------------------------------------------------
[time]
timesync_module_rt                 = "ecaltime-localtime"

; ---------------------------------------------
; PROCESS SETTINGS
; ---------------------------------------------
;
; terminal_emulator                = /usr/bin/x-terminal-emulator -e    command for starting applications with an external terminal emulator. If empty, the command will be ignored. Ignored on Windows.
;                                                                       e.g.  /usr/bin/x-terminal-emulator -e
;                                                                             /usr/bin/gnome-terminal -x
;                                                                             /usr/bin/xterm -e
;
; ---------------------------------------------
[process]
terminal_emulator                  =

; --------------------------------------------------
; PUBLISHER SETTINGS
; --------------------------------------------------
; use_inproc                       = 0, 1, 2                       Use inner process transport layer (0 = off, 1 = on, 2 = auto, default = 0)
; use_shm                          = 0, 1, 2                       Use shared memory transport layer (0 = off, 1 = on, 2 = auto, default = 2)
; use_tcp                          = 0, 1, 2                       Use tcp transport layer           (0 = off, 1 = on, 2 = auto, default = 0)
; use_udp_mc                       = 0, 1, 2                       Use udp multicast transport layer (0 = off, 1 = on, 2 = auto, default = 2)
;
; memfile_minsize                  = x * 4096 kB                   Default memory file size for new publisher
;
; memfile_reserve                  = 50 .. x %                     Dynamic file size reserve before recreating memory file if topic size changes
;
; memfile_ack_timeout              = 0 .. x ms                     Publisher timeout for ack event from subscriber that memory file content is processed
;
; memfile_buffer_count             = 1 .. x                        Number of parallel used memory file buffers for 1:n publish/subscribe ipc connections (default = 1)
; memfile_zero_copy                = 0, 1                          Allow matching subscriber to access memory file without copying its content in advance (blocking mode)
;
; share_ttype                      = 0, 1                          Share topic type via registration layer
; share_tdesc                      = 0, 1                          Share topic description via registration layer (switch off to disable reflection)
; --------------------------------------------------
[publisher]
use_inproc                         = 0
use_shm                            = 2
use_tcp                            = 0
use_udp_mc                         = 2

memfile_minsize                    = 4096
memfile_reserve                    = 50
memfile_ack_timeout                = 0
memfile_buffer_count               = 1
memfile_zero_copy                  = 0

share_ttype                        = 1
share_tdesc                        = 1

; --------------------------------------------------
; SERVICE SETTINGS
; --------------------------------------------------
; protocol_v0                      = 0, 1                          Support service protocol v0, eCAL 5.11 and older (0 = off, 1 = on)
; protocol_v1                      = 0, 1                          Support service protocol v1, eCAL 5.12 and newer (0 = off, 1 = on)
; --------------------------------------------------
[service]
protocol_v0                        = 1
protocol_v1                        = 1

; --------------------------------------------------
; MONITORING SETTINGS
; --------------------------------------------------
; timeout                          = 1000 + (x * 1000)             Timeout for topic monitoring in ms
; filter_excl                      = ^__.*$                        Topics blacklist as regular expression (will not be monitored)
; filter_incl                      =                               Topics whitelist as regular expression (will be monitored only)
; filter_log_con                   = info, warning, error, fatal   Log messages logged to console (all, info, warning, error, fatal, debug1, debug2, debug3, debug4)
; filter_log_file                  =                               Log messages to logged into file system
; filter_log_udp                   = info, warning, error, fatal   Log messages logged via udp network
; --------------------------------------------------
[monitoring]
timeout                            = 1000
filter_excl                        = ^__.*$
filter_incl                        =
filter_log_con                     = info, warning, error, fatal
filter_log_file                    =
filter_log_udp                     = info, warning, error, fatal

; --------------------------------------------------
; SYS SETTINGS
; --------------------------------------------------
; filter_excl                      = App1,App2                     Apps blacklist to be excluded when importing tasks from cloud
; --------------------------------------------------
[sys]
filter_excl                        = ^eCALSysClient$|^eCALSysGUI$|^eCALSys$

; --------------------------------------------------
; EXPERIMENTAL SETTINGS
; --------------------------------------------------
; shm_monitoring_enabled           = false                         Enable distribution of monitoring/registration information via shared memory
; shm_monitoring_domain            = ecal_monitoring               Domain name for shared memory based monitoring/registration
; shm_monitoring_queue_size        = 1024                          Queue size of monitoring/registration events
; network_monitoring_disabled      = false                         Disable distribution of monitoring/registration information via network
;
; drop_out_of_order_messages       = false                         Enable dropping of payload messages that arrive out of order
; --------------------------------------------------
[experimental]
shm_monitoring_enabled             = false
shm_monitoring_domain              = ecal_mon
shm_monitoring_queue_size          = 1024
network_monitoring_disabled        = false
drop_out_of_order_messages         = false

Hi @kubbo, sorry, somehow we missed your issue.
What programm are you running exactly? Do you have a reproducible sample?
Which eCAL version? We have recently released eCAL 5.12.6 and 5.13.2.


Error: No module named 'urlparse'

Hi, I am using Django 1.9 with Python 3.4 and when I try to run this library I get the following error:
File "/Users/xxx/Developer/rodolfomartinez/yyyy/py-zzzzz/env/lib/python3.4/site-packages/subdomains/utils.py", line 2, in <module>
    from urlparse import urlunparse
ImportError: No module named 'urlparse'

The solution to having this library support the missing library is to have this project import urllib and have utils.py have the following code:
try:
    from urllib.parse import urlparse
except ImportError:
    from urlparse import urlparse

Upon investigation, it looks like when I run:
pip install django-subdomains

When I check the version, it appears pip installs version 2.0.x which causes the error in my OP.
However, if I run:
pip install django-subdomains==2.1.0rc0

And then run the app and this error disappears. I don't know what happened, but I think this issue is considered closed unless you think there might be something to do with the configuration here.

This was due to fact that this was marked as release candidate and not a stable release. I fixed this with be6cc1c556a2007287ef4e647ea1784cf7690a44 of GH-46.


feat(design-assests): rename sketch to design-assets/add connections icons

Add Connections icons to design-assets to make available for download on the guide.
Changelog
New

Connections icons in sizes 16px, 24px, 48px and 64px

Changed

sketch dir renamed to design-assets

changing how we're handling this - closing


Literal bit flags

Literal::Flags provides an interface for working with bit flags which are groups of booleans stored in an integer. Bit flags are extremely efficient because each flag takes one bit of storage.
Here's an example of how you can create a bit flag object.
PostFlags < Literal::Flags
  define(
    published: 0,
    featured: 1,
    deleted: 2,
    paid_only: 3
  )
end

Now in your post, you can use an integer for flags
class Post < ApplicationRecord
  def flags
    PostFlags.new(super)
  end
end

You can get and set flags
post.flags.published?
post.flags.published = true

You can use hash style
post.flags[:published]
post.flags[:published] = true

Is there a use-case where you would have different bit values than the index of the flags is provided in an array?
Relatedly, is there any way to migrate data if you need to remove or insert a flag, or is the only option to append new flags to the end of the list?

Is there a use-case where you would have different bit values than the index of the flags is provided in an array?

The reason to specify the bit value for each key is to avoid shifting the index when removing items. Could have used an array and each_with_index, but I think it would be more likely to result in unintentional index shifting.

Relatedly, is there any way to migrate data if you need to remove or insert a flag, or is the only option to append new flags to the end of the list?

You can insert new flags with new indexes, as long as your storage layer can handle the extra bits. For example, if you’re using a 1-byte integer, you could add up to 8 flags.
Removing flags is fine since it won't cause the existing bits to shift. You can run a migration to reset a specific bit to 0 and then reuse that bit for a different option.

Nice. Just a thought (am on holiday so can't play with the code myself unf) how does this tie up with Enum? Eg instead of defining flags with the define method and a hash of symbols/integers, can an Enum be used to specify the flags?


⚠ Bofrost.be has degraded performance

In 627bd12, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 935 ms

Resolved: Bofrost.be performance has improved in 4c07984 after 6 minutes.


Fix/approval limits

The purpose of this PR is to update the UI correctly when a user enters an amount to approve, for example 1, but then switches the approval amount to something else, such as 2 directly in the MetaMask browser extension. With new changes, the UI will get the approval amount from an event log,  rather than a number stored in a Zustand state management store
https://github.com/user-attachments/assets/386925d1-52e3-44ca-a57e-38b8b845b70c


[BUG] images not showing

Describe the bug
Images in the book are not showing
To Reproduce
Steps to reproduce the behavior:

Enter WAX account
Click on magnification glass
Click book cover to turn page
See error (i.e. see no card images)

Expected behavior
Card images shoudl be shown on each page of the book
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

Browser [e.g. chrome, safari]
Version 88.0.4324.190

@andrecrjr Can you help maybe?

@sebrock  created the branch changing the ipfs, test with that branch fix/change-ipfs-client

Excellent! The cards are showing now,
But still an issue with the logo upper left and on the cover page.
Tried to replace with local file from ../../src/assets but not persistently succesful.
It worked once but then not anymore afterwards...
🤷🏼♂
⚠  https://github.com/sebrock/periodicelem-waxbook/commit/980f4d2c63d0b01e82318895ba3614c982c90576

Excellent! The cards are showing now,
But still an issue with the logo upper left and on the cover page.
Tried to replace with local file from ../../src/assets but not persistently succesful.
It worked once but then not anymore afterwards...
🤷🏼♂
⚠ 980f4d2

try to put the logo inside public folder, then you just use

sorry

@sebrock test the branch fix/image-path , look if it works now


Consent expiration setting

Support a consent lifetime to require a resource owner to re-consent

Required pulling changes for consistent expiration handling in #1135 to allow an expired consent to be returned from the DefaultGrantStore so that it could be checked in DefaultConsentService.RequireConsentAsync()
Add a ConsentLifetime property to Client model.
Remove consent from store if expired.
Add unit tests to validate consent expiration

#951

@chrisowhite,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

We borked the branch and now have conflicts. Mind resubmitting just the changes for the new client setting?

I'm on vacation and won't get a chance until later this week if that's alright.

I'm on vacation and won't get a chance until later this week if that's alright.

Dude, this is OSS -- there are no holidays! J/K, enjoy your time off :)

I've pulled dev and fixed the merge conflict. Should be good to go!

Excellent, thanks.


Collapsible sidebar

Sidebar can now be resized and collapsed by user.
Resized width is saved in local storage so we can restore it after refresh.

Closes #6

Thank you for the feature this is a better implementation than what i had in mind.


PoS Block Producer: Add Refresh Operation To PosMempool

Current dependencies on/for this PR:

feature/proof-of-stake

PR #578

PR #671

PR #676

PR #700   👈

PR #701

PR #702

PR #689

PR #673
PR #672

This comment was auto-generated by Graphite.


Origin/Main fails flakily on tests

https://github.com/googleapis/google-cloud-node/actions/runs/10623072758/job/29448718408#step:5:16

I believe I fixed it here and here


Arabic shows up as ?????

Column {
            Text(Strings.homeScreen(localization.locale))
            Box(Modifier.height(Dp(12.0f))){}
            Text("العربية")
        }

Hi @yebaital,
Can you check your properties files that they are correctly encode as UTF-8. See also the discussion in issue #25.


ssl-cert-check: init at 3.31

Motivation for this change
This is a basic TLS certificate checking bash script already packaged by debian is useful for monitoring ssl certificate expiry
Things done

[x] built and tested on NixOS

Success on x86_64-linux (full log)
Attempted: ssl-cert-check
Partial log (click to expand)
no Makefile, doing nothing
installing
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31
strip is /nix/store/21ymadblbmsbb2bk4q7gl4kjasp8zmgd-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31/bin
patching script interpreter paths in /nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31
/nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31/bin/.ssl-cert-check-wrapped: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/qckzjk3406va7h6s40cy9s75z2w715rq-bash-4.4-p19/bin/bash"
checking for references to /build in /nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31...
/nix/store/qiglclwrj8zdaa03j5qyb0r8zjy2mm51-ssl-cert-check-3.31

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: ssl-cert-check
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on aarch64-linux (full log)
Attempted: ssl-cert-check
Partial log (click to expand)
no Makefile, doing nothing
installing
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31
strip is /nix/store/qg2agrqkf240s656d207zqhipl0bc2id-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31/bin
patching script interpreter paths in /nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31
/nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31/bin/.ssl-cert-check-wrapped: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/9rv2bzx7jz6wjbaxij5qq580qvzksj4i-bash-4.4-p19/bin/bash"
checking for references to /build in /nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31...
/nix/store/jr89apbfcglngmsih475xbrdxyxdhi5p-ssl-cert-check-3.31


Some constant operands are duplicated

1@2 → (1 1@2)

https://github.com/awagga/tacit.help/commit/c5c569a6579ad13f5b601ff6138690cc1b659531