2022.01.13

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

278 of 907 (30.65%)  changed or added relevant lines in 14 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-9.006%) to 42.832%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/unid/runtime/secp256k1.rs
14
15
93.33%

src/unid/did/payload.rs
62
70
88.57%

src/unid/utils/random.rs
0
11
0.0%

src/bindings/mod.rs
0
23
0.0%

src/unid/ciphers/signer.rs
11
35
31.43%

src/handler.rs
9
45
20.0%

src/ffi.rs
0
52
0.0%

src/unid/utils/ecdsa.rs
0
100
0.0%

src/lib.rs
0
114
0.0%

src/unid/utils/aes_crypt.rs
0
117
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/lib.rs
2
1.4%

Totals

Change from base Build<PHONE_NUMBER>:
-9.006%

Covered Lines:
729

Relevant Lines:
1702

💛  - Coveralls


Center pages

There are currently some pages, that don't use the centerend layout.
I'm aware of:

[ ] Search
[ ] Categories
[ ] Collections

All done


filter: Middleware should keep blocked cached response

for the ttl of the dns response, the cache should keep the response if it's blocked, to avoid re-fetching something blocked.

remove https://github.com/qdm12/dns/blob/68ee053d8bc424cd58f0739f0a155ed68708fcf1/pkg/filter/middleware/middleware.go#L48
remove cache injection to filter Middleware
remove Remove method on cache

Done in 4e69763118ba080548293eef14b8670414f686c0


module-folder-structure: add fix capability

When a "simple" folder structure is required, "fix" creates those folders.
Example:
{
  "rules": {
    "module-folder-structure": {
      "strict": false,
      "folders": [
        "src",
        "libs/**/release"
      ]
    }
  }
}

In case a module has no folders in it:

Folder "src" would be created (it will fix the problem)
Folder "libs" would be created to indicate the "direction" of the structure (but won't fix the problem, which is ok)

In case a module has folder "src" and "libs/mylib":

Folder "libs/mylib/release" is created (it will fix the problem)

The overall idea with the rules is to iteratively work with the dev, in the loop. It shows an issue, the dev fix something, it fixes another and shows new issues on and on... until all is fixed. This will be nice specially when we have our VSCode plugin #12
@sergioflores-j @tiagostutz what do you think?

Nice one.!! I'll tackle that on my open source friday!

🎉


Document added to repo doesn't seem to get state from web socket peer until it sends state of own

To reproduce the error I'm using CloudCount and:

Create new document.
Copy new document to another computer
Check the "Automerge Repo" checkbox on one computer and increment count
At this point computer one and the repo's web socket peer state should match
Now on computer 2 open the document copy and check the "Automerge Repo" checkbox

At this point I would expect that second document's state to get synced with the web socket peer, but this isn't happening. To see the latest state from the peer I need to first modify the document... only then does syncing start to work.

I'm seeing what I think is a variant of the same problem.
In my app, starting with an empty local repo but documents at sync.automerge.org (also a local file system storage provider but I don't think that's relevant):

first document I find() gets lucky and syncs from server because of peer init code (Repo.addPeerWithMetadata())
subsequent finds for other documents create an empty document locally but don't sync and so the document isn't populated. (I haven't tested modifying this new document locally to see if it triggers a sync and merge, but I assume it will.)

This quick mod is working for me so far (certainly not proposing this as the fix – I'm not familiar enough with the code for that):
diff --git a/Sources/AutomergeRepo/Repo.swift b/Sources/AutomergeRepo/Repo.swift
index 933621b..0d3b405 100644
--- a/Sources/AutomergeRepo/Repo.swift
+++ b/Sources/AutomergeRepo/Repo.swift
@@ -357,6 +357,7 @@ public final class Repo {
             // sync changes should be invoked as rapidly as possible to allow for best possible
             // collaborative editing experiences.
             let handleObserver = doc.objectWillChange
+                .prepend(())
                 .sink { [weak self] _ in
                     guard let self else { return }
                     self.saveSignalPublisher.send(id)

I jumped back in and read around on this, but I'm not yet confident on the sequence of calls to the repo that's leading to the failure scenario - and if these two patterns are identical. Can you help by giving me a little more detail in terms of the state of the two repositories, and what specific calls have been invoked on either side, and in which order?
In the detail from @luxmentis, I think what I'm hearing is:

there's a remote repository "A"

at least two documents are created on it, and then it "goes online" and connect to another repository - "B"

repository "B"

invokes a find() for one of the documents - this works and syncs correctly
invokes a find() for the second document, and this doesn't work without the fix above?

Is that correct @luxmentis?
I want to be super clear on the ordering of creation, connecting (and/or disconnecting), and invocations of find to really understand this.

@heckj Hmm, actually let's ignore my "first doc works, second doc doesn't" statement for the moment (which was partly about the order of things in my client code; explanation below).
Now I wonder if I'm misunderstanding the API. Here's a simple example:
import XCTest
@testable import AutomergeRepo
import Combine

final class SyncTest: XCTestCase {
    private var subs = [AnyCancellable]()

    func testExample() async throws {
        let webSocketProvider = WebSocketProvider(WebSocketProviderConfiguration(reconnectOnError: true, loggingAt: .errorOnly))
        let repo = await Repo(sharePolicy: .agreeable, storage: InMemoryStorage(), networks: [webSocketProvider])
        try await webSocketProvider.connect(to: URL(string: "wss://sync.automerge.org/")!)

        // a document with this id exists
        try await syncAndDisplayHistory(id: "abFmaStDm3D7Yqh57ULbG5fwSoJ", repo: repo)

        try? await Task.sleep(for: .seconds(60))
    }

    func syncAndDisplayHistory(id: String, repo: Repo) async throws {
        let handle = try await repo.find(id: DocumentId(id)!)

        handle.doc.objectWillChange.prepend(()).receive(on: DispatchQueue.main).sink {
            print("\(id) history count: \(handle.doc.getHistory().count)")
        }
        .store(in: &subs)
    }
}

This creates an empty local doc but never fetches from the server (i.e. doc.getHistory().count stays at 0). With the Repo mod from my earlier message, it does fetch the remote content.
Is there something other than find() I'm supposed to do? Or is this a bug?
Part 2; possibly tangential
Earlier, in my app, the first fetch worked because I happened to be calling fetch() before webSocketProvider.connect(). As mentioned earlier, Repo's peer init code triggered a remote sync. Attempts to fetch subsequent document(s) were after the connect, so didn't benefit from that code. But as I say, perhaps the overall problem is I'm not getting the API.

@luxmentis I took a bit of time and morphed your example test into one that would fit into the integration tests. Because they use a local docker instance of automerge-repo for hosting the WebSocket for their tests, it got updated and broken a up.
I think the reason the prepend() is needed in your system is a slight missed expectation. As soon as you get the DocHandle back from the await repo.find(), it should be the latest version that the server had - and it's history (the list of ChangeHash) at that moment should be what you're expecting. That's what the first test - https://github.com/automerge/automerge-repo-swift/blob/main/IntegrationTests/Tests/IntegrationTestsTests/RepoAndTwoClientWebsocketIntegrationTests.swift#L102-L120 - illustrates.
The objectWillChange publisher won't trigger until a new change comes in over the WebSocket connection. Take a look at the test at https://github.com/automerge/automerge-repo-swift/blob/main/IntegrationTests/Tests/IntegrationTestsTests/RepoAndTwoClientWebsocketIntegrationTests.swift#L122-L159, and you'll see the loosely same flow as your code is testing - but this objectWillChange.sink() setup is verifying that it receives an input on that published when the document is updated.
(FWIW, the "expectation/fulfills setup in the tests can let them operate a TON faster than dropping the Task.sleep(30) kiund of setups in there. It's a fair bit of pomp and circumstance to set them up, but they work nicely.)
Worst part of these testing scenarios is that the automerge-repo sync protocol doesn't (yet? - maybe down the road) return a "yeah, you're all synced up" confirmation response when you send a sync message, so it's unavoidable in some of the testing scenarios.
Take a look at the examples in the integration tests, feel free to run them yourself (you'll need to update them to use the public sync server, or run a local instance with Docker - there's a script in the repo for that though - ./scripts/interop.sh). See if that makes a bit more sense.
As far as I'm concerned, there's no issue with you keeping the prepend() in your publisher if you're counting on that trigger to establish and trigger other business logic in your app, but it might be easier if you knew the history was up to date and ready to be used immediately on return from the await repo.find() call.

FWIW, the "expectation/fulfills setup in the tests can let them operate a TON faster than dropping the Task.sleep(30) kiund of setups in there

Oh, for sure. Abusing the test format was just a quick and dirty way for me to get you some runnable code. Not intended as an actual test.
Thanks for the integration test, which I've run and seen pass. I think we've ended up talking at cross-purposes a bit because my example code contained a publisher, in addition to the publisher in the original git diff I posted. Here's a simplified version to make communication easier. I'd have patched your integration test, but there's no StorageProvider implementation available. But this will run if you drop it (temporarily!) into the package's main test folder.
func testRepoWithStorage() async throws {
    let repo = Repo(sharePolicy: .agreeable, storage: InMemoryStorage())
    let websocket = WebSocketProvider()
    await repo.addNetworkAdapter(adapter: websocket)
    try await websocket.connect(to: URL(string: "wss://sync.automerge.org/")!)

    let handle = try await repo.find(id: DocumentId("abFmaStDm3D7Yqh57ULbG5fwSoJ")!)

    // This fails: history is empty at this point. But it would succeed if we weren't using the storage.
    XCTAssertFalse(handle.doc.getHistory().isEmpty)
}

So it turns out behaviour is different when the repo has storage. In this example, history is empty after the find() and the test fails. But if you use a repo without storage it becomes equivalent to your integration test and it passes.
The empty history problem isn't specific to the use of InMemoryStorage – my app uses a custom FileSystemStorage implementation and behaves the same, which is what led me here.
Hope that's clearer!

Oh perfect, that's super useful! I'd not fully tested and iterated on the whole end to end interactions with storage providers other than the simple bits with the InMemory stuff in unit tests. This'll be perfect to dig into! Thanks for the code above, and for the detail that it's specific to when there IS a storage provider. That should help narrow it down and we'll get this sorted in some fashion.

Sounds good. My emergency fix works for me for now.
By the way, pretty neat sitting with my daughter doing some collaborative editing and watching each others' changes come up!

I've got the repro set up - https://github.com/automerge/automerge-repo-swift/pull/113
Not only is the history not set and available (and hence, I'm sure the document contents aren't quite proper either), but the change notifications are failing when there's a storage provider attached to the repo that invoked the find() to retrieve things.

Yeah, slightly different pattern - there's definitely an issue with sync and find() when there's a storage provider added. I'll add a test along these lines into Integration test so we can sort it.

Question for you @jessegrosjean  - do have a local extension or something for the example above? The compiler had a little fit for documentA.headsKey - and I wasn't sure how you were setting up that property. A hash or something of the [ChangeHash] from .history()?

Question for you @jessegrosjean - do have a local extension or something for the example above?

Oops, yes. Just remove headsKey part and compare heads normally I think.

Well, one of the issues is found anyway. On import (or create) there wasn't anything that was pro-actively kicking off an initial sync. It was only when the document was changed that it would be "written" out to any connected peers. In the PR, I've extracted the logic to request a sync into it's own private method and explicitly called it from create(), import(), and clone() after it's been fully resolved locally.
I also went ahead and marked import() with discardableResult, given the way it was used in the example, it seems to make sense in retrospect there.

I think I have the fix in place. Need to sort out unit tests to matches updated behavior, but it's pretty close. Should have a fix out later today.

@luxmentis The underlying issue - now fixed in the main branch - was that I had mismatched logic in the storage adapter interface. One side always returned a new Document, even if it wasn't available - which caused the resolver logic to never attempt to sync with other peers. That's been fixed, as well as documents are no proactively synced with all peers on creation, a change in behaviour from earlier setup.

@heckj Looking good here. I'm currently chasing some other weirdness, but I don't think it's related.


Make the high-level wrapper usable in reflection-free mode

It's not possible to retrieve type names needed for component registration in reflection-free mode. Closing for now.


Changing uid gid

Summary

The purpose of this PR is to set proper uids and gids on stack images.
Use Cases

Checklist

[x] I have viewed, signed, and submitted the Contributor License Agreement.
[ ] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[x] I have added an integration test, if necessary.
[x] I have reviewed the styleguide for guidance on my code quality.
[x] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

I'll take a look tomorrow!

In case people wonder about the reason for this.

our images are based on an existing image that used 1001 as the run image
when we originally tested out the nodejs-extension we used 1001 for both the build and run uids.  During review it was suggested we be consistent with the rest of the buildpacks and use different uids. We did not know of any issue in doing that so modified to do that.
While @pacostas was running the existing integration tests againt the npm-install buildpack he discoverd a problem with permissions.
Swapping these uids in the way this PR does maintains the separation of using a different uid in the build and run phases while keeping the run uid consistent with what is used in the base images we are extending and resolves the permissions issues we ran into.

@pacostas changes look good, just need an update to the integration tests here because they are now failing


Missing prebuild binaries in 6.2.1

SerialPort Version: 6.2.1
NodeJS Version: 5.4.1
Operating System and Hardware Platform: Windows 10 x64

Summary of Problem
In version 6.2.0, serialport included prebuild binaries for Node 4.X, 5.X, 6.X, 7.X, 8.X and 9.X. See release on GitHub.
In version 6.2.1, serialport includes prebuild binaries for Node 6.X, 8.X and 10.X. See release on GitHub
It is surprising to see a change that breaks the installation of the package for end users with older Node runtimes in a patch release.
I understand that Node 4.X, 5.X and 7.X are at end of life, but I'm not sure if the intent of removing prebuild binaries for those versions means that serialport does not support those Node versions anymore.
If Node 4.X, 5.X and 7.X are not supported, it would be nice to update the Platform Support section of the README.md to say so. I would have liked to see dropping support for Node versions as a breaking semver change, not a patch change.

Thank you for the quick response @reconbot. I'm sorry to hear the latest release was a pain. Tooling changes are an annoying source of churn. I made a PR to try to bring back the prebuild on older Node versions. However Node 5 still fails on Appveyor (see PR for details).


Add percent encoding for titles and abstracts when sending metadata to EZID

Add percent encoding for titles and abstracts before sending metadata to EZID
Add notes on error-handling that needs fixing
Correct the path used for the POST to EZID (previous posts had an extra slash in them)

I don't see how this solve the problem EZID has with percent. Has this been tested?

@myucekul yes, this code has been tested and is currently running in production. DOIs (with abstracts) are being minted sucessfully.

Sounds good. Thanks Hardy!


hpack-convert: 1.0.1 -> 1.0.2

1.0.1 does not compile with the current package set
Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

@expipiplus1 Could you please rebase this?
@basvandijk Are you able to review?

@aanderse rebased

@expipiplus1 ping https://github.com/NixOS/nixpkgs/pull/59438#discussion_r283519709

I don't think its been released, I'm not sure how actively the package is maintained on Hackage.
What's the nixpkgs policy on using unreleased versions of Haskell packages? Perhaps this would be more appropriate as a patch on the 1.0.1 release.
-----Original Message-----
From: "Aaron Andersen"<EMAIL_ADDRESS>Sent: 17/05/2019 00:08
To: "NixOS/nixpkgs"<EMAIL_ADDRESS>Cc: "Joe Hermaszewski"<EMAIL_ADDRESS>"Mention"<EMAIL_ADDRESS>Subject: Re: [NixOS/nixpkgs] hpack-convert: 1.0.1 -> 1.0.2 (#59438)
@expipiplus1 ping #59438 (comment)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

I suggest to only use the patch that actually fixes the error. What is the error anyways?
And the package in nixpkgs will automatically be updated to the newest version once released on hackage.

@Infinisil by patch, I meant the same code but expressed as a patch against what's on hackage instead of a reference to a git tree, so no real difference.
The error, just bitrot:
 $ nix-build '<nixpkgs>' -A haskellPackages.hpack-convert
these derivations will be built:
  /nix/store/mdr6q7jac873q0xi3mp3nscchkfjfl65-hpack-convert-1.0.1.drv
building '/nix/store/mdr6q7jac873q0xi3mp3nscchkfjfl65-hpack-convert-1.0.1.drv'...
setupCompilerEnvironmentPhase
Build with /nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5.
unpacking sources
unpacking source archive /nix/store/9sr13hnrp7xqdw0sjpdhsgns43xh46mq-hpack-convert-1.0.1.tar.gz
source root is hpack-convert-1.0.1
setting SOURCE_DATE_EPOCH to timestamp<PHONE_NUMBER> of file hpack-convert-1.0.1/hpack-convert.cabal
patching sources
compileBuildDriverPhase
setupCompileFlags: -package-db=/tmp/nix-build-hpack-convert-1.0.1.drv-0/setup-package.conf.d -j4 -threaded
[1 of 1] Compiling Main             ( Setup.lhs, /tmp/nix-build-hpack-convert-1.0.1.drv-0/Main.o )
Linking Setup ...
configuring
configureFlags: --verbose --prefix=/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1 --libdir=$prefix/lib/$compiler --libsubdir=$abi/$libname --docdir=/nix/store/c2yyxvmdizjqj2c41p04jp4vba6hkgf9-hpack-convert-1.0.1-doc/share/doc/hpack-convert-1.0.1 --with-gcc=gcc --package-db=/tmp/nix-build-hpack-convert-1.0.1.drv-0/package.conf.d --ghc-option=-j4 --disable-split-objs --enable-library-profiling --profiling-detail=exported-functions --disable-profiling --enable-shared --disable-coverage --enable-static --disable-executable-dynamic --enable-tests --disable-benchmarks --enable-library-vanilla --disable-library-for-ghci --ghc-option=-split-sections --extra-lib-dirs=/nix/store/gfwnxwkqn7lgqrjy9wdqazak5yiv39xf-ncurses-6.1-20190112/lib --extra-lib-dirs=/nix/store/ypkza8mghfl5vjj5nysg60flql03d8y2-libffi-3.2.1/lib --extra-lib-dirs=/nix/store/g8x2j5p7d4yihcsh76l3dbqsg7rfn0fr-gmp-6.1.2/lib
Using Parsec parser
Configuring hpack-convert-1.0.1...
Dependency Cabal >=1.22: using Cabal-<IP_ADDRESS>
Dependency Glob -any: using Glob-0.9.3
Dependency aeson -any: using aeson-<IP_ADDRESS>
Dependency base >=4.7 && <5: using base-<IP_ADDRESS>
Dependency base-compat >=0.8: using base-compat-0.10.5
Dependency bytestring -any: using bytestring-<IP_ADDRESS>
Dependency containers -any: using containers-<IP_ADDRESS>
Dependency deepseq -any: using deepseq-<IP_ADDRESS>
Dependency directory -any: using directory-<IP_ADDRESS>
Dependency filepath -any: using filepath-<IP_ADDRESS>
Dependency pretty -any: using pretty-<IP_ADDRESS>
Dependency split -any: using split-<IP_ADDRESS>
Dependency text -any: using text-<IP_ADDRESS>
Dependency unordered-containers >=<IP_ADDRESS>: using unordered-containers-<IP_ADDRESS>
Dependency vector -any: using vector-<IP_ADDRESS>
Dependency yaml -any: using yaml-<IP_ADDRESS>
Dependency Cabal >=1.22: using Cabal-<IP_ADDRESS>
Dependency Glob -any: using Glob-0.9.3
Dependency aeson -any: using aeson-<IP_ADDRESS>
Dependency base >=4.7 && <5: using base-<IP_ADDRESS>
Dependency base-compat >=0.8: using base-compat-0.10.5
Dependency bytestring -any: using bytestring-<IP_ADDRESS>
Dependency containers -any: using containers-<IP_ADDRESS>
Dependency deepseq -any: using deepseq-<IP_ADDRESS>
Dependency directory -any: using directory-<IP_ADDRESS>
Dependency filepath -any: using filepath-<IP_ADDRESS>
Dependency pretty -any: using pretty-<IP_ADDRESS>
Dependency split -any: using split-<IP_ADDRESS>
Dependency text -any: using text-<IP_ADDRESS>
Dependency unordered-containers >=<IP_ADDRESS>: using unordered-containers-<IP_ADDRESS>
Dependency vector -any: using vector-<IP_ADDRESS>
Dependency yaml -any: using yaml-<IP_ADDRESS>
Dependency Cabal >=1.22: using Cabal-<IP_ADDRESS>
Dependency Glob -any: using Glob-0.9.3
Dependency QuickCheck -any: using QuickCheck-<IP_ADDRESS>
Dependency aeson -any: using aeson-<IP_ADDRESS>
Dependency aeson-qq -any: using aeson-qq-0.8.2
Dependency base >=4.7 && <5: using base-<IP_ADDRESS>
Dependency base-compat >=0.8: using base-compat-0.10.5
Dependency bytestring -any: using bytestring-<IP_ADDRESS>
Dependency containers -any: using containers-<IP_ADDRESS>
Dependency deepseq -any: using deepseq-<IP_ADDRESS>
Dependency directory -any: using directory-<IP_ADDRESS>
Dependency filepath -any: using filepath-<IP_ADDRESS>
Dependency hspec ==2.*: using hspec-2.6.1
Dependency interpolate -any: using interpolate-0.2.0
Dependency mockery >=0.3: using mockery-0.3.5
Dependency pretty -any: using pretty-<IP_ADDRESS>
Dependency split -any: using split-<IP_ADDRESS>
Dependency temporary -any: using temporary-1.3
Dependency text -any: using text-<IP_ADDRESS>
Dependency unordered-containers >=<IP_ADDRESS>: using unordered-containers-<IP_ADDRESS>
Dependency vector -any: using vector-<IP_ADDRESS>
Dependency yaml -any: using yaml-<IP_ADDRESS>
Source component graph:
    component test:spec
    component exe:hpack-convert
    component lib
Configured component graph:
    component hpack-convert-1.0.1-25BcR78FdU3HKczDxbRTBJ-spec
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include QuickCheck-<IP_ADDRESS>-JyVWDgZJAFGJC5rmVxfUSm
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include aeson-qq-0.8.2-IxZHmeM1BmVH9UEeaOAq4v
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include hspec-2.6.1-LTb1DHFxhgIBvS5vnMkjZd
        include interpolate-0.2.0-Jd143B82DpODz76BOYurWM
        include mockery-0.3.5-5nxdgV6F7KpAJ9L7HhAWLd
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include temporary-1.3-CB9fHlG082HEdRH1lvSErG
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    component hpack-convert-1.0.1-Dl1f2Q2aTCFJ0YHUD9iSC6-hpack-convert
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    component hpack-convert-1.0.1-6UPflyOAng82GqGq3sNdRh
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
Linked component graph:
    unit hpack-convert-1.0.1-25BcR78FdU3HKczDxbRTBJ-spec
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include QuickCheck-<IP_ADDRESS>-JyVWDgZJAFGJC5rmVxfUSm
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include aeson-qq-0.8.2-IxZHmeM1BmVH9UEeaOAq4v
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include hspec-2.6.1-LTb1DHFxhgIBvS5vnMkjZd
        include interpolate-0.2.0-Jd143B82DpODz76BOYurWM
        include mockery-0.3.5-5nxdgV6F7KpAJ9L7HhAWLd
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include temporary-1.3-CB9fHlG082HEdRH1lvSErG
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    unit hpack-convert-1.0.1-Dl1f2Q2aTCFJ0YHUD9iSC6-hpack-convert
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    unit hpack-convert-1.0.1-6UPflyOAng82GqGq3sNdRh
        include Cabal-<IP_ADDRESS>
        include Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        include aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        include base-<IP_ADDRESS>
        include base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        include bytestring-<IP_ADDRESS>
        include containers-<IP_ADDRESS>
        include deepseq-<IP_ADDRESS>
        include directory-<IP_ADDRESS>
        include filepath-<IP_ADDRESS>
        include pretty-<IP_ADDRESS>
        include split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        include text-<IP_ADDRESS>
        include unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        include vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        include yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
        Hpack.Convert=hpack-convert-1.0.1-6UPflyOAng82GqGq3sNdRh:Hpack.Convert
Ready component graph:
    definite hpack-convert-1.0.1-Dl1f2Q2aTCFJ0YHUD9iSC6-hpack-convert
        depends Cabal-<IP_ADDRESS>
        depends Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        depends aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        depends base-<IP_ADDRESS>
        depends base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        depends bytestring-<IP_ADDRESS>
        depends containers-<IP_ADDRESS>
        depends deepseq-<IP_ADDRESS>
        depends directory-<IP_ADDRESS>
        depends filepath-<IP_ADDRESS>
        depends pretty-<IP_ADDRESS>
        depends split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        depends text-<IP_ADDRESS>
        depends unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        depends vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        depends yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    definite hpack-convert-1.0.1-6UPflyOAng82GqGq3sNdRh
        depends Cabal-<IP_ADDRESS>
        depends Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        depends aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        depends base-<IP_ADDRESS>
        depends base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        depends bytestring-<IP_ADDRESS>
        depends containers-<IP_ADDRESS>
        depends deepseq-<IP_ADDRESS>
        depends directory-<IP_ADDRESS>
        depends filepath-<IP_ADDRESS>
        depends pretty-<IP_ADDRESS>
        depends split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        depends text-<IP_ADDRESS>
        depends unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        depends vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        depends yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
    definite hpack-convert-1.0.1-25BcR78FdU3HKczDxbRTBJ-spec
        depends Cabal-<IP_ADDRESS>
        depends Glob-0.9.3-3s9l1uOjBy2Kl63YnQwmq1
        depends QuickCheck-<IP_ADDRESS>-JyVWDgZJAFGJC5rmVxfUSm
        depends aeson-<IP_ADDRESS>-JZqYuUdHBw93faVr1pymZn
        depends aeson-qq-0.8.2-IxZHmeM1BmVH9UEeaOAq4v
        depends base-<IP_ADDRESS>
        depends base-compat-0.10.5-FRXoAxOVtbG2qLNIZm1tTr
        depends bytestring-<IP_ADDRESS>
        depends containers-<IP_ADDRESS>
        depends deepseq-<IP_ADDRESS>
        depends directory-<IP_ADDRESS>
        depends filepath-<IP_ADDRESS>
        depends hspec-2.6.1-LTb1DHFxhgIBvS5vnMkjZd
        depends interpolate-0.2.0-Jd143B82DpODz76BOYurWM
        depends mockery-0.3.5-5nxdgV6F7KpAJ9L7HhAWLd
        depends pretty-<IP_ADDRESS>
        depends split-<IP_ADDRESS>-CwXUcGD2U4I4pJUogujB5u
        depends temporary-1.3-CB9fHlG082HEdRH1lvSErG
        depends text-<IP_ADDRESS>
        depends unordered-containers-<IP_ADDRESS>-9doDsrqzw7xAm9zCbYj8Qi
        depends vector-<IP_ADDRESS>-2LEYu9M2i7lERDtz76XG3n
        depends yaml-<IP_ADDRESS>-CsUjJIWremZIQFiLXvTIHp
Using Cabal-<IP_ADDRESS> compiled by ghc-8.6
Using compiler: ghc-8.6.5
Using install prefix:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1
Executables installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/bin
Libraries installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/lib/ghc-8.6.5/x86_64-linux-ghc-8.6.5/hpack-convert-1.0.1-6UPflyOAng82GqGq3sNdRh
Dynamic Libraries installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/lib/ghc-8.6.5/x86_64-linux-ghc-8.6.5
Private executables installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/libexec/x86_64-linux-ghc-8.6.5/hpack-convert-1.0.1
Data files installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/share/x86_64-linux-ghc-8.6.5/hpack-convert-1.0.1
Documentation installed in:
/nix/store/c2yyxvmdizjqj2c41p04jp4vba6hkgf9-hpack-convert-1.0.1-doc/share/doc/hpack-convert-1.0.1
Configuration files installed in:
/nix/store/ayfsqw30yp8zwz2x03xzndsqv6f9iwfh-hpack-convert-1.0.1/etc
No alex found
Using ar found on system at:
/nix/store/6k95q6vvnmspf3c0nm8q55sixsvmn9nc-binutils-2.31.1/bin/ar
No c2hs found
No cpphs found
No doctest found
Using gcc version 7.4.0 given by user at:
/nix/store/sy6cxd224k9mk64n0xx70ar2vfjin6wv-gcc-wrapper-7.4.0/bin/gcc
Using ghc version 8.6.5 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/ghc
Using ghc-pkg version 8.6.5 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/ghc-pkg
No ghcjs found
No ghcjs-pkg found
No greencard found
Using haddock version 2.22.0 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/haddock
No happy found
Using haskell-suite found on system at: haskell-suite-dummy-location
Using haskell-suite-pkg found on system at: haskell-suite-pkg-dummy-location
No hmake found
Using hpc version 0.67 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/hpc
Using hsc2hs version 0.68.5 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/hsc2hs
Using hscolour version 1.24 found on system at:
/nix/store/5yg1bdhn27p24knja0va22mjpnsanz7c-hscolour-1.24.4/bin/HsColour
No jhc found
Using ld found on system at:
/nix/store/3g4bgh46msclfldnyl9pqxfsp8980z89-binutils-wrapper-2.31.1/bin/ld
No pkg-config found
Using runghc version 8.6.5 found on system at:
/nix/store/j6av0ybqw0div0bynv9gmx9xig2x9r5p-ghc-8.6.5/bin/runghc
Using strip version 2.31 found on system at:
/nix/store/6k95q6vvnmspf3c0nm8q55sixsvmn9nc-binutils-2.31.1/bin/strip
Using tar found on system at:
/nix/store/lqdgxavfilyjn8mskv9q2k17d7hbminv-gnutar-1.32/bin/tar
No uhc found
building
Preprocessing executable 'hpack-convert' for hpack-convert-1.0.1..
Building executable 'hpack-convert' for hpack-convert-1.0.1..

on the commandline: warning:
    -fcontext-stack=100 is deprecated: use -freduction-depth=100 instead

<no location info>: warning: [-Wmissing-home-modules]
    These modules are needed for compilation but not listed in your .cabal file's other-modules:
        Paths_hpack_convert
[ 1 of 13] Compiling Hpack.GenericsUtil ( src/Hpack/GenericsUtil.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/GenericsUtil.o )
[ 2 of 13] Compiling Hpack.Haskell    ( src/Hpack/Haskell.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/Haskell.o )
[ 3 of 13] Compiling Hpack.Render     ( src/Hpack/Render.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/Render.o )
[ 4 of 13] Compiling Hpack.FormattingHints ( src/Hpack/FormattingHints.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/FormattingHints.o )
[ 5 of 13] Compiling Hpack.Util       ( src/Hpack/Util.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/Util.o )

src/Hpack/Util.hs:106:21: error:
    • Couldn't match type ‘[[FilePath]]’ with ‘([[FilePath]], b0)’
      Expected type: IO ([[FilePath]], b0)
        Actual type: IO [[FilePath]]
    • In the second argument of ‘(<$>)’, namely
        ‘globDir compiledPatterns dir’
      In the first argument of ‘(>>=)’, namely
        ‘(fst <$> globDir compiledPatterns dir)’
      In a stmt of a 'do' block:
        files <- (fst <$> globDir compiledPatterns dir)
                   >>= mapM removeDirectories
    |
106 |   files <- (fst <$> globDir compiledPatterns dir) >>= mapM removeDirectories
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ 6 of 13] Compiling Hpack.Yaml       ( src/Hpack/Yaml.hs, dist/build/hpack-convert/hpack-convert-tmp/Hpack/Yaml.o )
[11 of 13] Compiling Paths_hpack_convert ( dist/build/hpack-convert/autogen/Paths_hpack_convert.hs, dist/build/hpack-convert/hpack-convert-tmp/Paths_hpack_convert.o )
builder for '/nix/store/mdr6q7jac873q0xi3mp3nscchkfjfl65-hpack-convert-1.0.1.drv' failed with exit code 1
error: build of '/nix/store/mdr6q7jac873q0xi3mp3nscchkfjfl65-hpack-convert-1.0.1.drv' failed

This PR appears to be over a year old, so I am going to go ahead and close it.
But if you'd still like to see this fixed up, please feel free to open a new PR against the current haskell-updates branch.


Schedule trigger that detects when server fails to stop/restart and executes a kill server task.

Feature Request
A schedule trigger that detects when server fails to stop/restart and an accompanying "kill server" task.
Feature Information:
A schedule trigger that detects when the server fails to stop or restart, perhaps done with a timeout. An accompanying "Kill server" task to be used with it too.
For the Minecraft McMyAdmin module.
Why? I have a server that gets stuck when stopping and restarting. This trigger would mean I no longer have to press the kill server button and click the start server button every time. I can just do it automatically with a trigger and two tasks (kill, start).
I confirm:

[x] that I have searched for an existing feature request matching the description.

This is part of AMPs normal behaviour so doesn't rely on the scheduler.


RTCVideoRenderer compile issue

Sample project with issue attached
https://github.com/jascodes/livekit-RTCVideoRenderer-issue
I am getting following compilation issue
Running pod install...                                           1,532ms
Running Xcode build...
Xcode build done.                                           14.7s
Failed to build iOS app
Error output from Xcode build:
↳
    2022-09-06 23:14:08.411 xcodebuild[36055:7243386] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    2022-09-06 23:14:08.411 xcodebuild[36055:7243386] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    ** BUILD FAILED **

Xcode's output:
↳
    Writing result bundle at path:
        /var/folders/6j/9zrnw83s1ld0_xz021p88_680000gp/T/flutter_tools.3HK6l1/flutter_ios_build_temp_diryHAE0T/temporary_xcresult_bundle

    ../../.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.9.4/lib/src/native/rtc_video_renderer_impl.dart:11:7: Error: The non-abstract class 'RTCVideoRenderer' is missing implementations for these members:
     - VideoRenderer.onFirstFrameRendered
    Try to either
     - provide an implementation,
     - inherit an implementation from a superclass or mixin,
     - mark the class as abstract, or
     - provide a 'noSuchMethod' implementation.

    class RTCVideoRenderer extends ValueNotifier<RTCVideoValue>
          ^^^^^^^^^^^^^^^^
    ../../.pub-cache/hosted/pub.dartlang.org/webrtc_interface-1.0.8/lib/src/rtc_video_renderer.dart:51:13: Context: 'VideoRenderer.onFirstFrameRendered' is defined here.
      Function? onFirstFrameRendered;
                ^^^^^^^^^^^^^^^^^^^^
    Failed to package /Users/jascodes/sandbox/lk.
    Command PhaseScriptExecution failed with a nonzero exit code
    note: Using new build system
    note: Planning
    note: Build preparation complete
    note: Building targets in dependency order

    Result bundle written to path:
        /var/folders/6j/9zrnw83s1ld0_xz021p88_680000gp/T/flutter_tools.3HK6l1/flutter_ios_build_temp_diryHAE0T/temporary_xcresult_bundle

Encountered error while building for device.
❯ flutter build ios --no-codesign
INFO: Using FVM Flutter
Warning: Building for device with codesigning disabled. You will have to manually codesign before deploying to device.
Building bio.jas.lk for device (ios-release)...
Running Xcode build...
Xcode build done.                                           13.9s
Failed to build iOS app
Error output from Xcode build:
↳
    2022-09-06 23:14:51.959 xcodebuild[36454:7245359] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    2022-09-06 23:14:51.959 xcodebuild[36454:7245359] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    ** BUILD FAILED **

Xcode's output:
↳
    Writing result bundle at path:
        /var/folders/6j/9zrnw83s1ld0_xz021p88_680000gp/T/flutter_tools.MfQbkj/flutter_ios_build_temp_dir7TCdCj/temporary_xcresult_bundle

    ../../.pub-cache/hosted/pub.dartlang.org/flutter_webrtc-0.9.4/lib/src/native/rtc_video_renderer_impl.dart:11:7: Error: The non-abstract class 'RTCVideoRenderer' is missing implementations for these members:
     - VideoRenderer.onFirstFrameRendered
    Try to either
     - provide an implementation,
     - inherit an implementation from a superclass or mixin,
     - mark the class as abstract, or
     - provide a 'noSuchMethod' implementation.

    class RTCVideoRenderer extends ValueNotifier<RTCVideoValue>
          ^^^^^^^^^^^^^^^^
    ../../.pub-cache/hosted/pub.dartlang.org/webrtc_interface-1.0.8/lib/src/rtc_video_renderer.dart:51:13: Context: 'VideoRenderer.onFirstFrameRendered' is defined here.
      Function? onFirstFrameRendered;
                ^^^^^^^^^^^^^^^^^^^^
    Failed to package /Users/jascodes/sandbox/lk.
    Command PhaseScriptExecution failed with a nonzero exit code
    note: Using new build system
    note: Planning
    note: Build preparation complete
    note: Building targets in dependency order

    Result bundle written to path:
        /var/folders/6j/9zrnw83s1ld0_xz021p88_680000gp/T/flutter_tools.MfQbkj/flutter_ios_build_temp_dir7TCdCj/temporary_xcresult_bundle

Below is codemagic log
https://codemagic.io/app/63179ea75fd30abed612350c/build/63179fb69df13ea7e4935299
Steps to reproduce
create flutter 3.3 project
make ios target to 12.1
update podfile
post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
    target.build_configurations.each do |config|
      config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "12.1"
      #
      # Make it compile with M1 macs
      #
      config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
    end
  end
end

Let me know if there are any missing steps for iOS?

@jascodes fixed in https://pub.dev/packages/livekit_client/versions/1.1.1-hotfix,
You should fix compile errors after running flutter clean && flutter pub get.


EntityContext -> ShapeContext, EntityContextImpl -> EntityShapeContext

Fixes #908.
This context is exclusively used by block's 3 shape checking methods.
For its usage outside of blocks, it is used to be eventually passed to call one of the shape checking methods (as in CollisionView#canPlace or RayTraceContext)
Signed-off-by: liach<EMAIL_ADDRESS>

Looks a bit weird in the block package tho. Wouldn't it be better in util?

These are only used by blocks to conditionally return different collision shapes than used by any collision calculations.
On another note, CollisionView and RayTraceContext are both in world package.

Why not make a subpackage context in block then? Just feels out of place imo among block classes

uhh, these classes are more like the role of AbstractBlock.OffsetTypeor Material, which I consider proper under block package.


Support smallcheck versions 1.1.1 to 1.1.5. Resolves #11

If you don't want to use CPP for this I can make another pull request where I just drop compatibility for smallcheck < 1.1.5.

It's alright. Thanks for the PR.


Text highlighting stops working after using { in a literal.

If one uses open curly in a literal expression the text highlighting stops working correctly. It acts as if everything is being quoted.
For Instance glosub(VariableName,'{','')
After this statement all the text color changes do not take effect as they should. All variable names show the same color as literal expressions. You cannot easily determine what is a variable or literal. Even function calls show the same color as literal. Its very difficult to read anytime this happens. I know my issues are low on the priority list. Just fyi i love this ide, it is so nice to finally have one.

Thanks, Josh! I am glad you like the plugin. We are going to add your suggestions to the list.
We will address these issues in the next release.

Fixed in version 1.3.0
#58


Bug/engine task sync axon retry

Description

Revert #1782 and set retry for engine out not tasklist.
Check-List

[x] Smoketest successful (Manual E2E-Test depending on Change)
[x] No waste on Branch left (e.g. console.logs)
[x] Board is up-to-date

Change is for now done via digiwf-ops config map for evaluation.


fix: support expired preview token API error

Types of changes

[ ] Chore (a non-breaking change which is related to package maintenance)
[x] Bug fix (a non-breaking change which fixes an issue)
[ ] New feature (a non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Description
This PR adds support for a preview token error returned by Prismic's Document API when a token is expired.

PreviewTokenExpiredError: Thrown when a query's preview token (used as a ref) is expired.

This error extends from ForbiddenError for consistency with the other ref-related errors.
The new error will extend from PrismicError in a future major version for better semantics.
Checklist:

[ ] My change requires an update to the official documentation.
[x] All TSDoc comments are up-to-date and new ones have been added where necessary.
[x] All new and existing tests are passing.

🐤

Codecov Report
All modified lines are covered by tests :white_check_mark:

Comparison is base (163d03e) 99.97% compared to head (66c33d0) 99.97%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #328   +/-   ##
=======================================
  Coverage   99.97%   99.97%
=======================================
  Files          59       60    +1
  Lines        6852     6877   +25
  Branches      376      381    +5
=======================================
+ Hits         6850     6875   +25
  Misses          2        2

Files
Coverage Δ

src/createClient.ts
100.00% <100.00%> (ø)

src/errors/PreviewTokenExpired.ts
100.00% <100.00%> (ø)

src/index.ts
100.00% <100.00%> (ø)

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Sui move call error

How to call a common transaction :
i have this entry function :
public entry fun test(admin:&mut Admin,  ctx:&mut TxContext) {
}

I call it successfu in explorer but it always load when call in my frontend.
const tx = new TransactionBlock();

// params
tx.moveCall({
  target: `0x3ccdf67292ed156e43a1a4be716b0fda9e1dfb76b3fd469817760ba2b77e2d9b::nft_module:test`,
  arguments: [
    tx.object(
      '0x4dfce9e2d1fd5bcb437495bf7cfaeb74c4bee6a3203ac92c97a3eefe6ca24e78',
    ),
  ],
});
tx.setGasBudget(10000);

// call
await wallet.signAndExecuteTransactionBlock({
        transactionBlock: tx,
 });

Maybe you do not have enough faucet token


Ollie: Watch digitaltechhacker(?:@gmail.com)?

Ollie requests the watch of the watch_keyword digitaltechhacker(?:@gmail\.com)?. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

digitaltechhacker(?:@gmail\.com)? has been seen in 2 true positives, 0 false positives, and 0 NAAs.

digitaltechhacker(?:@gmail\.com)? has been seen in 2 true positives, 0 false positives, and 0 NAAs.

Approved by Machavity in Charcoal HQ

Approved by Machavity in Charcoal HQ


Add an option to define how to deal with missing/incomplete FLV support

Adds a new option flvOption which accepts the following values:
unsupported (default): Throws a NetStream.Play.NoSupportedTrackFound error whenever a FLV stream gets initialized. Most players should handle this error properly.
mock: Plays a default video instead of the FLV stream. Good for visually indicating that a SWF tries to play a FLV file and debugging unrelated issues that otherwise couldn't be reached due to (known) FLV errors.
supported: We should use this as default once FLV support is solid and during development and testing.

/botio reftest

/botio reftest


Bump github.com/prometheus/client_golang from 1.7.1 to 1.8.0

Coverage remained the same at 83.432% when pulling 4c006151bf4f8026dd8e2cbbca2a8e2d0b82e550 on develop into c267c4062942035255267e47707513326bbad24f on master.


Use daily master for installer pipeline instead of 1.1

The install of 1.1 is not supported, so I have adjusted the pipeline to

install daily-master
test
install old (fixed) version of master #until 1.2 was released
test
update to daily master
test

/lgtm

@holgero I will try an older version of the installer to install 1.1. Probably before b7e869e69f8755af913ae19763e7483b01db0974. But there is no supported way to have 1.1 installed in several namespaces, right?

This state now installs istio-1.1 and it works, but it cannot update to master anymore:
The Deployment "grafana" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"release":"istio-telemetry-istio-grafana", "app":"grafana"}: `selector` does not match template `labels`

Is this supported/should work at all?

@c0d1ngm0nk3y being able to upgrade is the main purpose of the installer, so that is definitely an issue.
Is that error when installing master when 1.1 is running? Is it installed in istio-telemetry?

+1 on what @howardjohn  said.
We need istio-1.1 in istio-system, and new installer in istio-control+istio-telemetry, etc.

Is that error when installing master when 1.1 is running?

@howardjohn Yes.

Is it installed in istio-telemetry?

Yes, in the pipeline the new installer installs/upgrades in istio-telemetry. Is this not as intended? If not, how is switching between the old and the new version supposed to work and where is this going to be implemented (istio-ctl?) ?
As a side note: Is there a Readme/design doc that I can have a look at which outlines the purpose of all these different tools during installation, testing and upgrade (make/helm/istioctl/kustomize/operator)? We would like to avoid a pipeline that tests a method of installation (install script/iop) that is not actually used (see this issue).

To clarify a bit:

using helm/tiller for install - should work, but user needs to run multiple helm commands, one per a-la-carte component.

using kustomize/kubectl -k - should work for the demo and default profile, possibly others. This is what k8s SIG recommends.

the iop script can be used to install component by component for full 'a-la-carte'

Makefile is meant for testing the repo, not to be used by users. Should have targets using iop to generate what is needed in kustomize.

install.sh - my understanding is that it is meant for concourse and other tests. I guess it could be
used as a wrapper around installing everything and alternative to 'apply -k' - but I'm not sure why
is better than either iop component by component or the 'pre-built' profiles.

operator - will use the templates from installer, but have more automation. That's what will do
the equivalent of 'install.sh' when ready, i.e. add/remove all needed components.

istioctl - the goal is to fold 'iop' into istioctl.

That's my understanding at least, from the many design docs and meetings.

I'm not sure I understand the change - but the description is certainly not what we want to do.
We must test:

install release-1.1 ( with old installer, in istio-system )
install app1 - verify it works
install master - in different namespaces
install an app2 pointing to master (istio-control), verify it works
verify app1 still works( ideally use fortio and check no errors )
migrate app1 to istio-control via rolling upgrade, verify it works and no errors.

install master - in different namespaces

@costinm Big thanks for this clarification. 3 follow-up questions:

Since citadel is in both cases installed in istio-system, this works only because the citadel service has different names, right? By design?
How does this work with CRDs? They are not namespaced, right?
What if some istio configuration objects (e.g. virtual service) refer to for example istio-ingress.istio-system? Can you adapt the configuration first and then switch the istio version?

@c0d1ngm0nk3y being able to upgrade is the main purpose of the installer, so that is definitely an issue.

So I think we should look into this and fix it.

kustomize can only be used for the demo scenarios, right? We want to test the "a-la-carte" variant here.  The install.sh basically wraps the iop commands.
Since there seems to be no update case, we removed the update steps for now. The pipeline checks now if the master of installer can be used with daily-master of  istio. Makes sense?
It is triggered

for each merged commit (PR validation comes next)
every 24h (because of daily-master)

Again the <sarcasm> very helpful </sarcasm> cla bot :( What is the issue? Can anyone say what should we do differently? Pair programming does not really work with this bot, does it?

@c0d1ngm0nk3y  have you signed the CLA or verify consent?

@c0d1ngm0nk3y have you signed the CLA or verify consent?

@linsun From what I understand, the bot has noticed that everyone involved signed the CLA (which is right). I think my consent is clear since I started this PR, so the other two need to add a comment? But how should pair programming work with this bot and why does it sometimes work and sometimes, the bot blocks the PR? I would love to understand the rules, so we might optimise our working model.
@jkbschmid @jsPlachetka Could you comment your consent?

I consent.

I give my consent


can i use it in my java project?

i loaded the maven project in my eclipse, and use"Bert.load()" to load the bert model, but it says"File not found"

do i misunderstanding the meaning of this project? can bert run in eclipse?
because our project're all write in java, so i wonder the answer,thanks very much.

i use the "Pre-Generated Maven Central Models", i can get the embedding vector, but i still want to know why there is error

@SmartMapple  can you share what did you pass in Resource Path here :
Bert bert = Bert.load("Resource-Path");
this doesn't work for me:
   Bert bert = Bert.load("bert-uncased-L-12-H-768-A-12");

@SmartMapple can you share what did you pass in Resource Path here :
Bert bert = Bert.load("Resource-Path");
this doesn't work for me:
 Bert bert = Bert.load("com.robrua.nlp.easy-bert.bert-uncased-L-12-H-768-A-12");

I used this:
Bert bert = Bert.load("com/robrua/nlp/easy-bert/bert-uncased-L-12-H-768-A-12")
when i try this project, i also met some question, some question is about maven and its import jars.


reuse_nat_ips not working

Description
I'm trying to use the reuse_nat_ips, in order to not waste EIPs.
I'm observing that:

The free EIP's in my account are not getting used, instead new EIP are getting requested
$ aws ec2 describe-addresses --query "Addresses [?NetworkInterfaceId == null ].PublicIp" [  "<IP_ADDRESS>",  "<IP_ADDRESS>",  "<IP_ADDRESS>" ]
removing the vpc doesn't preserve the EIP, it instead releases it.

[x] ✋ I have searched the open/closed issues and my issue is not listed.
Yes

⚠ Note
Before you submit an issue, please perform the following first:

Remove the local .terraform directory (! ONLY if state is stored remotely, which hopefully you are following that best practice!): rm -rf .terraform/
Re-initialize the project root to pull down modules: terraform init
Re-attempt your terraform plan or apply and check if the issue still persists

Versions

Module version [Required]:
Current is : 5.1.2

Terraform version:

Terraform v1.6.1
on linux_amd64

provider registry.terraform.io/hashicorp/aws v5.21.0

Provider version(s):

provider registry.terraform.io/hashicorp/aws v5.21.0
Reproduction Code [Required]
provider "aws" {
  region = local.region
}

data "aws_availability_zones" "available" {}

locals {

  name            = "example-tf-development"
  cluster_version = "1.27"
  region          = "eu-west-1"

  vpc_cidr = "<IP_ADDRESS>/16"
  azs      = slice(data.aws_availability_zones.available.names, 0, 3)

  tags = {
    Example    = local.name
    GithubRepo = "example-tf-development"
    GithubOrg  = "example"
  }
}

resource "aws_eip" "nat" {
  count = 3

  vpc = true
}
module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"

  name = local.name
  cidr = local.vpc_cidr

  azs             = local.azs
  private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)]
  public_subnets  = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)]
  intra_subnets   = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 52)]

  enable_nat_gateway = true
  single_nat_gateway = true
  reuse_nat_ips      = true # <= Skip creation of EIPs for the NAT Gateways
  external_nat_ip_ids = "${aws_eip.nat.*.id}"   # <= IPs specified here as input to the module

  public_subnet_tags = {
    "kubernetes.io/role/elb" = 1
  }

  private_subnet_tags = {
    "kubernetes.io/role/internal-elb" = 1
  }

  tags = local.tags
}

Steps to reproduce the behavior:
set the count = 3
terraform apply
Observed that 3 new eips have been added to the account.
Set count =1
terraform apply
2 Nat GW will get destroyed and their EIP are release.
Comment out everything about module vpc
terraform apply, this destroyes the vpc and nat gw but the EIP is also released from the account.

No.

Expected behavior
Free EIP in account are used
Deleting the nat gw from terraform will not release the EIP so i can reuse it

Actual behavior
New EIP are requested

Terminal Output Screenshot(s)

I have created an out to see what my EIP are:
Outputs:
nat_public_ips = [
"<IP_ADDRESS>",
"<IP_ADDRESS>",
"<IP_ADDRESS>",
]
The above doesn't match my previous lookup:
$ aws ec2 describe-addresses --query "Addresses [?NetworkInterfaceId == null ].PublicIp"
[
"<IP_ADDRESS>",
"<IP_ADDRESS>",
"<IP_ADDRESS>"
]
I see I have 3 unussed EIP but the vpc module execution always asks for new EIP
Additional context
I'm pretty new to terraform so I might be missing something here but as it stands I'm unable to preserve the EIP after I delete
the nat gw

Has anybody encountered this issue before?


Update to GHC 8.8.3

GHC 8.8.3 was released (2020-02-24). I thought it might be a good idea to update the stack88.yaml. I'm not aware of possible side effects or complications with haskell-language-server (@alanz). Please reject if it might cause trouble :)
https://www.stackage.org/lts-15.5
https://www.haskell.org/ghc/blog/20200224-ghc-8.8.3-released.html

Looks like there is an issue with windows
https://dev.azure.com/digitalasset/ghcide/_build/results?buildId=37157&view=logs&jobId=c161c675-1417-57ed-29bf-7d19b694489b&j=c161c675-1417-57ed-29bf-7d19b694489b&t=3813d704-4df5-5eff-d5f1-7414d6aa39b0

We always prefer using nightly: https://neilmitchell.blogspot.com/2015/12/whats-point-of-stackage-lts.html - but upgrading to the latest nightly with GHC 8.8.3 would be most welcome.

Hm, I don’t understand what is failing on Windows. Not sure if that’s because of GHC 8.8.3 or some library upgrade but it seems to be reproducible. @jneira any idea?

Jumm, it does not look good:
base-compat                      >
base-compat                      > Access violation in generated code when writing 0x0
base-compat                      >
base-compat                      >  Attempting to reconstruct a stack trace...
base-compat                      >
base-compat                      >    Frame	Code address
base-compat                      >  * 0x461da80	0x37f7b66 C:\Users\VssAdministrator\AppData\Local\Programs\stack\x86_64-windows\ghc-8.8.3\bin\ghc.exe+0x33f7b66
base-compat                      >  * 0x461da88	0x3277bb9 C:\Users\VssAdministrator\AppData\Local\Programs\stack\x86_64-windows\ghc-8.8.3\bin\ghc.exe+0x2e77bb9
base-compat                      >  * 0x461da90	0x5
base-compat                      >  * 0x461da98	0x5
base-compat                      >  * 0x461daa0	0x3d7dc22 C:\Users\VssAdministrator\AppData\Local\Programs\stack\x86_64-windows\ghc-8.8.3\bin\ghc.exe+0x397dc22
base-compat                      >  * 0x461daa8	0x643f600
base-compat                      >

I will try locally

The build has run succesfully in my local windows 10, but it failed in my azure project pipeline too.
There is a ticket in the ghc issue tracker with a similar error:
https://gitlab.haskell.org/ghc/ghc/issues/17926

Downgrading shake make the ci green: https://dev.azure.com/jneira/haskell-language-server/_build/results?buildId=740&view=logs&j=c161c675-1417-57ed-29bf-7d19b694489b
The stack88.yaml ends being:
resolver: nightly-2020-03-28
packages:
- .
extra-deps:
- base-compat-0.11.0
- base-compat-batteries-0.11.0
- haskell-lsp-<IP_ADDRESS>
- haskell-lsp-types-<IP_ADDRESS>
- lsp-test-<IP_ADDRESS>
- ghc-check-<IP_ADDRESS>
- shake-0.18.4

nix:
  packages: [zlib]

The shake 0.18.5 release was cut especially for ghcide to fix some bugs with interrupting. It would be very sad if we couldn't use it.

The shake 0.18.5 release was cut especially for ghcide to fix some bugs with interrupting. It would be very sad if we couldn't use it.

I know, but then we have three options:

disable windows build for stack88.yaml
wait for a ghc patch (assuming it is the same bug)
create an special stack88-windows.yaml with a comment, use it in azure and remove when the issue is resolved

I would vote for third option

What about the option of switching back to 8.8.2 and declaring that 8.8.3 is terminally broken on Windows and should be killed, rather than supported? From my experiments, nothing is working with 8.8.2 very reliably.

From my experiments, nothing is working with 8.8.2 very reliably.

I guess you wanted to mean 8.8.3
Well, 8.8.2 has its own windows serious bug that seems to not affect ghcide (for now...) but maybe it does for user projects so they could not use neither.
In any case if we choose use ghc-8.8.2 for windows i would create a specific yaml file, to let linux/macos users use the newer version.

Yep, I meant 8.8.3 is very broken. While 8.8.2 was broken in a small number of specific cases (e.g. loading Cabal dynamically) 8.8.3 seems just segfaulting all over the place. My guess is it will need to be pulled, so I'd just test with 8.8.2 everywhere and pretend 8.8.3 was a mistake that never happened.

While 8.8.2 was broken in a small number of specific cases (e.g. loading Cabal dynamically) 8.8.3 seems just segfaulting all over the place.

Oh, that are really bad news. I was happy with it cause i could build hie with in windows (and it has a lot of dependencies, including hlint and hoogle that failed with ghc-8.8.2).
Sometimes i think ghc release candence is a little bit hasty. :disappointed:

Hope this isn't too noisy to post here, but any nix users might appreciate this snippet that lets you build on Nix:
nixpkgsSelf: nixpkgsSuper:

let
  inherit (nixpkgsSelf) pkgs;

  ghcVersion = "ghc883";

  hsPkgs = nixpkgsSuper.haskell.packages.${ghcVersion}.override {
    overrides = with pkgs.haskell.lib; hSelf: hSuper: {
      # Override ghcide and some of its dependencies since the versions on
      # Nixpkgs is currently broken.
      ghcide = disableLibraryProfiling (dontCheck (
        hSelf.callCabal2nix
          "ghcide"
          (builtins.fetchGit {
            url = "https://github.com/digital-asset/ghcide.git";
            rev = "39605333c34039241768a1809024c739df3fb2bd";
          })
          {}
      ));
      hie-bios = disableLibraryProfiling (dontCheck (
        hSelf.callHackageDirect {
          pkg = "hie-bios";
          ver = "0.4.0";
          sha256 = "19lpg9ymd9656cy17vna8wr1hvzfal94gpm2d3xpnw1d5qr37z7x";
        } {}
      ));
      haskell-lsp = disableLibraryProfiling (dontCheck (
        hSelf.callHackageDirect {
          pkg = "haskell-lsp";
          ver = "<IP_ADDRESS>";
          sha256 = "1j6nvaxppr3wly2cprv556yxr220qw1ghd3ac139iw16ihfjvz8a";
        } {}
      ));
      haskell-lsp-types = disableLibraryProfiling (dontCheck (
        hSelf.callHackageDirect {
          pkg = "haskell-lsp-types";
          ver = "<IP_ADDRESS>";
          sha256 = "0vq7v6k9szmwxh2haphgzb3c2xih6h5yyq57707ncg0ha75bhlll";
        } {}
      ));
      shake = disableLibraryProfiling (dontCheck (hSelf.callHackage "shake" "0.18.5" {}));
    };
  };

in
{
  haskell = nixpkgsSuper.haskell // {
    inherit ghcVersion;

    packages = nixpkgsSuper.haskell.packages // {
      "${ghcVersion}" = hsPkgs;
    };
  };
}

Seems to be fixed in https://github.com/haskell/process/pull/176, hopefully there'll be a release of process soon.

process-<IP_ADDRESS> is out now and seems to include the fix! It would be great if you could try including this and see if it fixes the issue. If you prefer, I’m also happy to push to your branch to try it out.

@cocreature from talking to people, it seems that it will be necessary for GHC itself to be built with process-<IP_ADDRESS>. We've asked in the relevant places and such a release is being rolled, but likely no point doing anything until 8.8.4 is out.

Ah good to know. I guess we could still go down the route of using 8.8.3 outside of Windows but that complicates CI setups and I’m not sure it buys us anything.

With luck, we only have to wait a week or so, meaning not worth doing anything too complicated.

Will be superseeded by https://github.com/haskell/ghcide/pull/751
8.8.4 is available on stackage:

closing as obsolete


Provide a way to cancel client request

Motivation:
#3046.
Modifications:

Add cancel() and isCancelled() to RequestContext, which delegate to TimeoutScheduler.
Add cancel() to TimeoutScheduler, which is similar to the existing timeoutNow(), but instead sets the state to CANCELLED.
Update HttpResponseWrapper's timeoutTask to check ctx.isCancelled() and abort request with either ResponseTimeoutException or CancellationException.

Result:
You can call ClientRequestContext.cancel() to cancel a request. The effect is similar to timeoutNow(), but abort with a CancellationException.
Closes #3046.

What do you think about considering a timeout is one way to cancel a request? We could:

Pull everything (cancel() and isCancelled()) up from ClientRequestContext to RequestContext.
Add RequestContext.cancel(Throwable cause).
Make RequestContext.cancel() a shortcut for cancel(RequestCancellationException.get()).
Make RequestContext.timeoutNow() a shortcut for cancel(RequestTimeoutException.get()) or cancel(ResponseTimeoutException.get()).
Add RequestContext.cancellationCause() which returns why the request has been cancelled.

Make isTimedOut() a shortcut for cancellationCause() instanceof TimeoutException.
Make isCancelled() a shortcut for cancellationCause() != null.

What do you think, @tumile and @ikhoon ?

I have a question. Putting cancel() in RequestContext means response cancellation on server is also allowed. Is that desirable?
I'm starting to buy the idea (like @ikhoon first mentioned), especially consider timeout is a form of cancel. What I was worried about was we'd have logics determining cause in 2 places, but what @trustin recommended completes it. We'll need a more suitable name for TimeoutScheduler though. How about simply CancellationScheduler?

@tumile I think it's useful a service that checks RequestContext.isCancelled() manually when performing a long running job. Some services already perform a similar check using isTimedOut(), so I think it's fine. Let me know what you think, @ikhoon and @minwoox, and maybe @anuraaga
CancellationScheduler sounds good to me. :+1:

On second thought, I think TimeoutScheduler is actually an apt name for the class considering its functionality (schedule a task to be executed after an amount of time). It shouldn't concern about its usage, i.e for request cancellation or request timeout. However, I rename its instances to requestCancellationScheduler. Also, I rename TimeoutScheduler.timeoutNow() to finishNow(), which is general for both timeoutNow() and cancel() to avoid ambiguity. finishNow() can take a flag to determine if the handlers need to be cancelled.

What do you think about considering a timeout is one way to cancel a request? We could:

I love the idea! 👍

I find you renamed timeoutScheduler in variable/parameter names, but you did not rename the class. Is this intended?

@trustin I explained a bit up here. I found TimeoutScheduler to be a fair name for the content of the class. Everything about it says about timeout. If I were to rename to CancellationScheduler, should whenTimingOut and whenTimedOut be whenCancelling and whenCancelled? Otherwise it would read really weird.

@tumile

should whenTimingOut and whenTimedOut be whenCancelling and whenCancelled?

Yeah, how about adding whenCancelling() and whenCancelled() that return CompletableFuture<Throwable>? We could also deprecate whenTimingOut() and whenTimedOut() and delegate to whenCancelling/whenCancelled instead, e.g.
CompletableFuture<Void> whenTimingOut() {
    return whenCancelling().thenApply(cause -> (Void) null);
}

Please don't forget to remove all the deprecated usages. :wink: What do you think?

I should also point out that currently when the Scheduler finishes by a cancellation, the two futures are canceled, essentially they cancel whenResponseTimingOut and whenResponseTimedOut in the context. I think that distinction is necessary because the user probably won't expect whenResponseTimingOut to complete when the request is canceled by other means. So I think whenTimingOut and whenCancelling should be independent? Probably keep it as it is now. Or we can make whenTimingOut complete exceptionally but I don't think it has the same effect?

That's a good point. How about doing something like this:
@Deprecated
CompletableFuture<Void> whenTimingOut() {
    final CompletableFuture<Void> f = new CompletableFuture<>();
    whenCancelling().thenApply(cause -> {
        if (cause instanceof TimeoutException) {
            f.complete(null);
        }
    });
    return f;
}

I think it's ready for another round of review 😄. We can add whenResponseCancelling/Cancelled that receive the cancellation cause in context as well to make use of whenCancelling/Cancelled.

Before starting to address my comments, we could also do the following alternatively:

Don't pull up anything;
Add CancellationException and ResponseCancellationException, like we have them with TimeoutException;
add whenResponseCancelling/Cancelled() like we did for whenRequestTiming/TimedOut().

This may be less breaking/deprecating than my initial suggestion. What do you think?

I deleted some of my comments that do not make much sense. Please ignore your email notifications and check my new comments again. 🙇

what happens when a request is handled successfully without cancellation? Should the when*() futures complete or not?

Previously the when*() futures don't complete if the request is handled successfully. Let's keep it that way and nicely documented.

IIRC we never cancel the future returned by whenTimed/TimingOut(), i.e. any callbacks added by a user will be invoked only when the request has timed out.

whenTime*() futures shouldn't complete if the cause is not TimeoutException. Right, they don't have to be canceled, but this behavior should be documented as well.

@tumile Could you update the PR description? It does not explain the current code anymore. 😉

Thanks @ikhoon! Please take a look.

Thanks a lot everyone! 😄


Example Success Call or Failure Call

Hi there,
Could you maybe also add an example to distinguish between success call or failing call?
Because as far as I know, audit4J will just audit as is without knowing it's throwing exception or not (for example). Thanks.
Regards,
Zul

Sorry there won't be any example (for version 2.5.0 and below)
because in the current implementation (2.5.0 and below), with the annotation @Audit,
there is no way to know if the method audited is ended correctly of if it is throwing an exception
One work arround is may be to call manually the  Audit Manager at the end of the method you want to audit (see doc 5.1 Calling Audit Manager)
But this solution is not always correct (transactionnal method with an error during the commit)
Regards Franck


Update jetty-server to 11.0.0

Updates org.eclipse.jetty:jetty-server from 8.2.0.v20160908 to 11.0.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.eclipse.jetty", artifactId = "jetty-server" } ]

labels: library-update

Please rebase to fix some CI issues.

Tests success, but I'm unsure if we should bump the jetty-server and the jetty-websocket deps at the same time.
Any comments?

Tests success, but I'm unsure if we should bump the jetty-server and the jetty-websocket deps at the same time.
Any comments?

Superseded by #1177.


Multiple Datatables in Same View Laravel

I don't remember the version that worked without problems according to this stackoverflow answer
https://stackoverflow.com/questions/69346943/how-can-i-have-multiple-yajra-datatables-on-one-page-in-laravel
in the current version, it is working in parts, it is correctly showing the two datatables, but it is searching for the first datatable in the second, that is, it is only working and accepting the existing fields and the addColumn() of the first datatable
on controller
        $dataTable = new DatatableDataTable();
        $dataTable2 = (new Datatable2DataTable())->html();
        return $dataTable->render('view', compact('dataTable2'));

on view

              {{ $dataTable->table() }}
              {{ $dataTable->scripts() }}

              {{ $dataTable2->table() }}
              {{ $dataTable2->scripts() }}

System details

Operating System Windows 11 22H2
PHP Version 8.26
Laravel Version v10.13.0
Laravel-Datatables Version v10.1.0

Just make sure you set the ajax prop accordingly in each dataTable. By default, it uses the current URL.
->setTableId('xx')
->ajax(route('path'))
...

There is also a DataTableHtml class that you can implement if you want it extracted and reusable but sad to say that I haven't had the time to document it well.
To generate, use something like: php artisan datatables:make User --builder.

Added the route it worked.
I don't remember which version worked without this need, I only needed the table id and the $dataTableVariable for each one in the case of multiple tables in the same view
It would be interesting if it worked without this need because for multiple tables it can generate an excess of too many routes.
Thanks for the explanation and help.


New package: KolmogorovArnold v0.0.1

Registering package: KolmogorovArnold
Repository: https://github.com/vpuri3/KolmogorovArnold.jl
Created by: @vpuri3
Version: v0.0.1
Commit: 26a46970b96e4f1c99a5d14a2480baf749b03929
Reviewed by: @vpuri3
Reference: https://github.com/vpuri3/KolmogorovArnold.jl/commit/26a46970b96e4f1c99a5d14a2480baf749b03929#commitcomment-149010535
Description: Julia implementation of the Kolmogorov-Arnold network with custom gradients for fast training.

[noblock]
Congrats on the new package!
Maybe you could add a note to the README specifying how it differs from existing Julia implementations like https://github.com/cometscome/FluxKAN.jl or https://github.com/rbSparky/KolmogorovArnoldNetworks.jl ?


launch failed: Cannot open image file for computing hash

Summary
When I executed 'microk8s install --mem=24 --cpu=7' got 'launch failed microk8s' message
What Should Happen Instead?
Installation succeeds with microk8s install command.
Reproduction Steps

execute "microk8s install --mem=24 --cpu=7"
The output at runtime is as follows.

microk8s install --mem=20 --cpu=7

Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
Retrieving image: 4%
launch failed: Cannot open image file for computing hash
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
launch failed: Downloaded image hash does not match
An error occurred with the instance when trying to launch with 'multipass': returned exit code 2.
Ensure that 'multipass' is setup correctly and try again.

multipass list
No instances found.

Introspection Report
microk8s inspect
MicroK8s is not installed. Please run `microk8s install`.

Can you suggest a fix?
Retrieving image seemed to be very slow.
Launch failed is displayed in about 4% of cases.
Is there a list somewhere of where to get the images?
I'm thinking of trying if I can change it.

Hi @konnta0
The microk8s installer uses multipass underneath to spawn a VM. It looks like the error is coming from multipass failing to download the VM image.
Can you try to manually start a multipass VM with multipass launch 20.04? I also wonder if the error you are seeing was transient networking issues.

@neoaggelos
Thank you for your reply!!
When I tried again, it succeeded in acquiring the image but failed to start...
multipass launch 20.04 -n test
Launched: test

multipass list
Name                    State             IPv4             Image
test                    Running           <IP_ADDRESS>    Ubuntu 20.04 LTS

microk8s install --mem=20 --cpu=7
Warning: the "--mem" long option is deprecated in favour of "--memory". Please update any scripts, etc.
Launched: microk8s-vm
ping: snapcraft.io: Temporary failure in name resolution
An error occurred when trying to execute 'sudo ping -c 1 snapcraft.io' with 'multipass': returned exit code 2.

multipass list
Name                    State             IPv4             Image
microk8s-vm             Running           <IP_ADDRESS>    Ubuntu 22.04 LTS
test                    Running           <IP_ADDRESS>    Ubuntu 20.04 LTS


 The most recent pluton run had a flake, but the tests that actually run the code in this PR passed twice in a row now.

rktbot run e2e

@derekparker PTAL should be ready to go.


⚠ Turnos 24x7 has degraded performance

In caff6f1, Turnos 24x7 (https://reservas-dev.alternativasinteligentes.com/) experienced degraded performance:

HTTP code: 200
Response time: 979 ms

Resolved: Turnos 24x7 performance has improved in 8dd69aa.


[kibana] Allow configuring lifecycle events

[x] Chart version not bumped (the versions are all bumped and released at the same time)
[x] README.md updated with any new values or changes
[x] Updated template tests in ${CHART}/tests/*.py
[ ] Updated integration tests in ${CHART}/examples/*/test/goss.yaml

Since this is a community submitted pull request, a Jenkins build has not been kicked off automatically. Can an Elastic organization member please verify the contents of this patch and then kick off a build manually?

Ok, I signed the CLA agreement now, do I need to do anything more with regards to that?

Ok, I signed the CLA agreement now, do I need to do anything more with regards to that?

Nope it looks good!
jenkins test this please


Unable to set icon on an exe which doesn't have an icon currently set

Hi there,
I can't seem to be able to change the icon on an exe that is using the Windows default exe icon.
To repro the issue:

Open the rcedit solution file
Go to Project Properties->C/C++->Code Generation->Runtime Library and change it to "Multi threaded Debug /Mtd"
Build from source
Set debugging arguments to:

C:\some_path_to_exe\testexe.exe --set-icon "C:\some_path_to_icon\icon.ico"
Note how you get:
Debug Assertion Failed!
Program: C:\Users\gbfieldst\Downloads\rcedit-master\Default\rcedit.exe
File: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\xtree
Line: 238
Expression: map/set iterator not dereferencable
Callstack:

rcedit.exe!std::_Debug_message(const wchar_t * message, const wchar_t * file, unsigned int line) Line 17	C++
rcedit.exe!std::_Tree_const_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,rescle::ResourceUpdater::IconResInfo> > > >::operator*() Line 239	C++
[Inline Frame] rcedit.exe!std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,rescle::ResourceUpdater::IconResInfo> > > >::operator*()	C++
[Inline Frame] rcedit.exe!std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<unsigned short const ,rescle::ResourceUpdater::IconResInfo> > > >::operator->()	C++
rcedit.exe!rescle::ResourceUpdater::SetIcon(const wchar_t * path) Line 640	C++
rcedit.exe!wmain(int argc, const wchar_t * * argv) Line 83	C++

This is because ResourceUpdater::SetIcon(const WCHAR* path) does:
auto& langId = iconBundleMap.begin()->first;
but the map is empty!
The executable I used is attached. It's 01_vertex_program.exe from the NVIDIA Cg toolkit install.
01_vertex_program.zip
Any ideas how this might be fixed?
Regards,
Tom

I think this is the same as #56, although with more C++ debug info.

Not sure. The copy of rcedit I have was downloaded on 9th Sept, which predates the commit mentioned in https://github.com/electron/rcedit/issues/56

Could you make sure it's reproducible with the latest rcedit?

With the latest rcedit I get:
Unable to set icon.
So that's good. So rcedit can only replace icons rather than add them? Is that correct?

That's my understanding.

OK. So I'm now hitting https://github.com/electron/rcedit/issues/56 which used to work prior to updating to latest.

The fix for https://github.com/electron/rcedit/issues/56 has now caused this issue again.

I tried your example with this artifact - it worked.
Nevertheless there is a bug: accessing the key of the 'first' element of an empty map should be considered.
I just tried these changes:
diff --git a/src/rescle.cc b/src/rescle.cc
index 8ca6f60..a0779d2 100644
--- a/src/rescle.cc
+++ b/src/rescle.cc
@@ -606,12 +606,18 @@ bool ResourceUpdater::SetIcon(const WCHAR* path, const LANGID& langId,
 }

 bool ResourceUpdater::SetIcon(const WCHAR* path, const LANGID& langId) {
-  UINT iconBundle = iconBundleMap_[langId].iconBundles.begin()->first;
+  UINT iconBundle;
+  if (!iconBundleMap_[langId].iconBundles.empty()) {
+    iconBundle = iconBundleMap_[langId].iconBundles.begin()->first;
+  }
   return SetIcon(path, langId, iconBundle);
 }

 bool ResourceUpdater::SetIcon(const WCHAR* path) {
-  LANGID langId = iconBundleMap_.begin()->first;
+  LANGID langId;
+  if (!iconBundleMap_.empty()) {
+       langId = iconBundleMap_.begin()->first;
+  }
   return SetIcon(path, langId);
 }

They seem to work - I did not get Errors for your testcase (I did not test anything other.)

@thomasmfields Can you confirm that this patch works?
Given a positive response I can prepare a Pull Request.

Looks good to me.


Feature/tree diff dataframe

Description
Add method to retrieve tree diff in dataframe, which allows for customised handling and processing if required.
Testing
No additional tests needed as the current code is abstracted out. One binary node test is added for coverage.
Additional notes

Checklist
I have read through the contributing guidelines and ensured that

[ ] I have added a descriptive title for this pull request.
[ ] I have followed the convention and standards, and my code is checked for style and correctness.
[ ] I have added test cases, and unit tests pass with 100% code coverage.
[ ] I have updated the documentation and code docstrings.

Checklist (for reviewer)

[ ] I have added label (breaking / enhancement / bug / documentation) to this pull request, if applicable.
[ ] I will ensure this change is captured in the CHANGELOG.md file.

https://github.com/kayjan/bigtree/issues/309


@Managed superclass fields could be properly handled as well

Codecov Report

Merging #6 into master will increase coverage by 1.5%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master       #6     +/-   ##
=========================================
+ Coverage   91.42%   92.92%   +1.5%
=========================================
  Files           2        2
  Lines         105       99      -6
  Branches       20       18      -2
=========================================
- Hits           96       92      -4
  Misses          6        6
+ Partials        3        1      -2

Impacted Files
Coverage Δ

...enspiegsa/wiremockextension/WireMockExtension.java
98.85% <100%> (+2.07%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 35cf19d...8acbdbe. Read the comment docs.

The main idea is to support having managed WireMockServer fields in parent test classes. In current implementation only current class is scanned for annotated WireMockServer fields

Looks good to me. :-)


[stable/concourse] PR #2983 may have broken deployment on k8s version 1.6

Context:
In the PR https://github.com/kubernetes/charts/pull/2983, this change was made: https://github.com/kubernetes/charts/pull/2983/commits/f660448745e48607f3f4f47e016cb16c90cfaeb3
This caused deployment of this chart to be unstable for kubernetes 1.6. The error message is:
Error: error validating "": error validating data: found invalid field podManagementPolicy for v1beta1.StatefulSetSpec
v1beta1.StatefulSetSpec doesn't support podManagementPolicy.

Thanks @jammm for the report, @unguiculus you had suggested to remove the conditional in this comment https://github.com/kubernetes/charts/pull/2983#discussion_r157244764, and I see that charts should be compatible with the current and previous version: https://github.com/kubernetes/charts#supported-kubernetes-versions. Should charts strive to drop support for older-than-previous versions?


P256 key generation with SLIP10

Closes #???
Description
Hao from lilico alerter on discord about SLIP10 [0] [1]; when I was developing BIP44 I developed with BIP32 ( which is using same private key generation for P256 as sec256k1 )
But seems https://github.com/satoshilabs has some SLIP for this, and it is even mentioned in our FLIP about hd wallet generation.
So I fixed our implementation to use SLIP10 instead of BIP32.
[0] https://discord.com/channels/613813861610684416/709804784089301002/1038105907806081064
[1] https://github.com/satoshilabs/slips/blob/master/slip-0010.md

For contributor use:

[x] Targeted PR against master branch
[ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work
[x] Code follows the standards mentioned here
[ ] Updated relevant documentation
[x] Re-reviewed Files changed in the Github PR explorer
[ ] Added appropriate labels

@bluesign can you please add a description of why this PR is an improvement?

@tarakby thanks for looking into. I actually tested with slip10 test vectors, but eventually I forgot to add tests here, I will add now.

Thank you @bluesign for updating the tests!
Sorry if I wasn't clear. What I meant is to add tests for the current repo implementation, specifically for newBip44AccountKey(..).PrivateKey() function. I think using github.com/lmars/go-slip10 is an internal implementation detail and that our tests should pass regardless of the internal method we use. If we were to use another package in the future, our implementation-agnostic test files would still be relevant.
Since our implementation only works with the lower level of the derivation path (we do not output the intermediate keys), we could test our implementation only against the lower key in the test vector. I think there are 4 keys in total to test against in the test vector (2 for each curve).
What do you think?
I can add a quick PR against yours if I'm bad at explaining with words 😄

@tarakby, that would be great; ( probably I am the one bad with understanding, I am not good at testing in general )

Just a note here but I feel this should be at some later time moved to Go SDK.

@tarakby that looks great, now I understand what you meant, I will merge them asap.

merged @tarakby changes and rebased.

@tarakby are we good now with this PR?

I believe @tarakby is OOO so we will have to wait for his approval.

@bluesign @sideninja please feel free to merge at your convenience

Very Sorry for blocking this PR for so long! I missed approving it early and had limited online access

No worries, I hope you had a nice time recharging.


Add end user welcome email

Add end user welcome email file to table of contents

On hold until this goes in: https://github.com/mattermost/docs/pull/1902/files

@esethna good to merge?


Addition of Stack And Queues Data Structures

I would like to contribute to this project by implementing Stack and Queue data structures. These are fundamental data structures that are often used in various algorithms and real-world applications, and I'd love to enhance the project with them.
Please let me know if this is something you'd be interested in adding, and I can get started right away!
Looking forward to your feedback!

mention name of algorithm you want to contribute in Stack and Queue

I would like to add Stack, Linear Queue, Circular Queue and DEqueue  in a menu driven manner, to show the proper ways how stack works in a LIFO manner and queue in FIFO

@DBasu2610 Go for it.

Can you please assign it to me? I want to work on it.

@AnujSaha0111 you can start working

Done it in #298


Strange error 0x8007012B

Hi, I downloaded via Release and running the game while trying to dump the offsets, but I encountered this error:

Then the Generated folder is created but nothing in there, I also tried --verbose, as well as run the program as Admin rights, but no use, any idea?

Hi, thanks for opening an issue.
In your terminal, please run set RUST_BACKTRACE=full and then download and run this binary (which contains debug symbols) then paste the full backtrace here.

Here is the trace:

As I said, I need you to use the binary I just provided here since it contains debug symbols.

Sorry my bad :D, here are the traces from the build above:

Ah, it seems you also need the PDB. In this case, it's best if you can build the project yourself.

Install Rust from here if you haven't already.
Open up a terminal in the project root and run cargo build - This should create a target/debug directory. Don't forget to copy the config.json file there too.
Then, in that directory, again run set RUST_BACKTRACE=full before running the binary.

This should give you a much more detailed stack trace, as the one you've provided isn't useful. Then, I can look into the issue.
Thanks

Hi @a2x, thanks for your detailed reply, I compiled and tested myself, here are the traces:

Can you tell me if the latest commit resolved this for you?

Yes, It does the job now, thanks for your effort helping me, I'm really grateful 🥇


The Hell is this.

Game name: VRChat
Engine version: ???
Platform: PC?
Error message: Some data left
Stack trace:    at uTinyRipper.Lz4.Lz4DecodeStream.ReadBuffer(Stream stream, Int64 count)
at uTinyRipper.BundleFileScheme.ReadFileStreamMetadata(Stream stream, Int64 basePosition)
at uTinyRipper.BundleFileScheme.ReadScheme(Stream stream)
at uTinyRipper.GameCollection.ReadScheme(SmartStream stream, String filePath, String fileName)
at uTinyRipper.GameCollection.LoadScheme(String filePath, String fileName)
at uTinyRipper.GameStructure.ProcessPlatformStructure(GameStructureProcessor processor, PlatformGameStructure structure)
at uTinyRipper.GameStructure.Load(List1 pathes, LayoutInfo layinfo)    at uTinyRipper.GameStructure.Load(IEnumerable1 pathes, LayoutInfo layinfo)
at uTinyRipperGUI.MainWindow.LoadFiles(Object data)

uTinyRipper has been abandoned, but you can try my AssetRipper fork. In the event that AssetRipper encounters issues while ripping your files, feel free to post an issue on that repository.
AssetRipper is actively being developed with the intent to recover games as best as possible. Weekly releases are normally on Sunday or Monday. I encourage you to help out if you're able and willing. Code contributions can be submitted via pull requests.
If you like the work I've done and want to see it continue, please consider sponsoring me. It really does help with development. These are some of the notable things I've implemented since taking over development:

2020+ support
APK, XAPK, and IPA reading with SharpZipLib
Dummy shaders (so everything isn't pink when you open the project)
IL2Cpp support via an integration of Cpp2IL
Better game platform support
Full script decompilation with the ILSpy decompiler
Cross-platform support
Multiple configuration options
Numerous performance improvements
Support for all asset types

Sponsorship Links:

GitHub Sponsors
Patreon
Paypal

I tried that Asset Ripper to recover a test avatar I desperately needed. You have inadvertently saved my life and recovered 10 hours of work. Thank you.


added aadii0408.json

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[ ] My code follows the code style of this project.
[ ] My change requires changes to the documentation.
[ ] I have updated the documentation accordingly.
[ ] All new and existing tests passed.
[ ] This PR does not contain plagiarized content.
[ ] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

Hey, Please review this @eddiejaoude @Pradumnasaraf

Also, you may need to add commas after the end of 7th & 9th lines.

Hey, Please review this @eddiejaoude  @Pradumnasaraf


[qtmultimedia] Add restriction feature ffmpeg does not support Linux

Fixes https://github.com/microsoft/vcpkg/issues/36429
ffmpeg requires libva to build on Linux, but currently there is no such port in vcpkg, so the build fails. Therefore add the restriction that ffmpeg does not support building on Linux.

[X] Changes comply with the maintainer guide.
[ ] SHA512s are updated for each updated download.
[ ] The "supports" clause reflects platforms that may be fixed by this new version.
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[X] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[X] Only one version is added to each modified port's versions file.

This feature passed with following triplets:
x64-windows
x64-linux

ffmpeg requires libva to build on Linux, but currently there is no such port in vcpkg, so the build fails. Therefore add the restriction that ffmpeg does not support building on Linux

that just means libva needs to be system provided for now. That does not rectify using supports!

that just means libva needs to be system provided for now. That does not rectify using supports!

Does this mean that I need to tell the user that he needs to install libva manually before installing feature ffmpeg?

... similar to all the x packages ...

Is there any new progress?

I will continue to follow up.


[DOCS] Add 8.12.2 release notes

Preview
https://elasticsearch-hadoop_2202.docs-preview.app.elstc.co/guide/en/elasticsearch/hadoop/master/eshadoop-8.12.2.html

💚 All backports created successfully

Status
Branch
Result

✅
8.12

Questions ?
Please refer to the Backport tool documentation

💚 All backports created successfully

Status
Branch
Result

✅
8.13

Questions ?
Please refer to the Backport tool documentation