Mark non-overlapping registers as related

Is your feature request related to a problem? Please describe.
The PowerPC 750CL processor (and its variants, Gekko, Broadway and Espresso) have 3 memory storages in each floating-point register:

One 64-bit "double" operand.
Two 32-bit "single" operands, dubbed "paired singles", ps0 and ps1.

There is currently no way to let Ghidra know that ps0, ps1 and the "double" operand are the same register.
This is problematic when a floating-point register gets passed into a function, because it can't detect that the "double" operand will also be set if ps0 is set to a certain value.
For additional context:

Floating-point single instructions operate on and write the result to the ps0 storage, copy it to ps1 and finally, cast it to a 64-bit float and copy it to the "double" operand.
Floating-point double instructions write the result just to the "double" operand and do not touch ps0 and ps1.
The floating-point single instruction frsp is the only way to copy from the double operand to ps0 (and therefore, as an exception to other floating-point single registers, takes the "double" operand as an input. ps1 in the output register is left undefined).
ps1 can be given a unique value and is operated on by "paired-singles" instructions, which are special to 750CL and its variants.

Describe the solution you'd like
I would like a way to tell the decompiler (presumably in the pentry blocks of the .cspec file) that multiple non-overlapping registers are related. I could imagine being able to have more than one register block inside of a pentry block to signify this.
Describe alternatives you've considered
Making the storage spaces all overlapping is not a solution, because the processor is able to switch between the "double" operand and the "single" operands without changing the actual stored memory.
Additional context
I am using this fork of the powerpc-gekko-broadway language definition to test this: https://github.com/RootCubed/ghidra-gekko-broadway-lang
These lines of assembly demonstrate the issue:
lfs f0, 0(r3)      # Loads single from r3+0 into f0_ps0, copies to f0_ps1 and f0 (double)
fadds f13, f0, f1  # Adds f0_ps0 and f1_ps0 into f13_ps0, copies to f13_ps1 and f13 (double)
fcmpu cr0, f13, f2 # Compares f13 (double) and f2 (double)
bge ge
fmr f13, f2        # Copies f2 (double) to f13 (double) and f2_ps0 to f13_ps0 (f13_ps1 is unchanged)
ge:
stfs f13, 0(r3)    # Stores f13_ps0 into r3+0
blr

The current decompiled output looks as follows:
void FUN_00010000(float param_1,float param_2,float *param_3)

{
  double in_f2;
  float fVar1;

  fVar1 = *param_3 + param_1;
  if ((double)(*param_3 + param_1) < in_f2) {
    fVar1 = param_2;
  }
  *param_3 = fVar1;
  return;
}

Ideally, it should decompile to
void FUN_00010000(float param_1,float param_2,float *param_3)

{
  float fVar1;

  fVar1 = *param_3 + param_1;
  if ((double)fVar1 < (double)param_2) {
    fVar1 = param_2;
  }
  *param_3 = fVar1;
  return;
}

Your descriptions are different than the user manual.  For example:

lfs f0, 0(r3)      # Loads single from r3+0 into f0_ps0, copies to f0_ps1 and f0 (double)

if rA = 0
then b <- 0
else b <- (rA)
EA <- b + EXTS(d)
if HID2[PSE] = 0
then frD <- DOUBLE(MEM(EA, 4))
else frD(ps0) <- Single(MEM(EA, 4))
     frD(ps1) <- Single(MEM(EA, 4))

The 32 floating-point registers (FPRs) serve as the data source or destination for floating-point instructions. These 64-bit registers can hold single, paired single or double-precision floating-point values.

This reads as double or single operations, not both in the same instruction and that the fN and fN_ps0/fN_ps1 should just be at the same register offset, where that module uses  0x4000 and 0x4800 instead.
The context register has the pse variable already created (unused) and ISPSE/NOTPSE macros (unused) and its just a matter of propagating that through each instruction (and/or some generic load/store macro based off of pse)

First of all, it's important to note this issue assumes the aforementioned HID[PSE] is 1.
The manual does not concisely describe a clear relation between the double operand and ps0/ps1.
It only says that the hardware allows ps0 to be used as an input for FP double instructions as a general exception.
However, we were able to determine after this issue has been opened, with the help of emulator developers, that the actual hardware behavior is that each FP registers have 2 memory storages and not 3. Just ps0 and ps1. Both are 64-bit.
In FP double instructions, ps0 is used as the double operand (hence the aforementioned "general exception"). ps1 is still never touched except by FP single operations and paired single operations.
FP single instructions still operate on the 64-bit ps0, but in single precision (and the value is still copied to ps1).
Though even after this discovery, we decided to keep the distinction between the double operand and ps0 (as 32 bits) to make it easier for the decompiler to get rid of useless double to float casts and make it easier for it to determine whether a value is supposed to be a float or a double.

You're talking about operands in your links, I'm talking about registers.  Your instructions should just try to use the correct registers for the operands and your SLEIGH should use the FP pcode operations to toggle float<->double (save into a sized local of 4 or 8 and float2float to flip it/or not as you do in lfs).
Are you trying to force this module to work around an emulator issue and not the user manual?  Your description of the emulator operations makes it seem like they just used 64-bit floats ignoring the description of the ps0/ps1 from the manual.  They're 32-bit each and as a pair make 64-bit as you stated in your original post.
Also having your single and double at two offsets seems like it would be a nightmare to handle cleanly in the cspec to the point that auto-analysis would have an extremely difficult time picking the right calling convention, which looks like the effect you're seeing maybe.
so if its only ==1, why are you doing both operations (master)
:lfs	fD,dPlusRaOrZeroAddress 	is $(NOTVLE) & OP=48 & fD & dPlusRaOrZeroAddress & ps0D & ps1D
{
	result:4 = *:4(dPlusRaOrZeroAddress);

	fD = float2float(result);
	ps0D = result;
	ps1D = result;
}

This would get recognized as a no-op since you are overwriting, but as they're in different offsets currently it will look weird to the decompiler/analysis I'd think.  You're using one set of registers offsets as function inputs/outputs and then start writing to other registers offsets, so you'd have to guarantee the correct value gets set when used as the input/output
this may be out of date with your recent findings, but the branch kind of looks weirder, now you're not writing ps0, but fD (which would read better as ps0D since they are attached to the same fD here) and ps1 is  still at different offset (and not sized the same),
#lfs fr0,8(r2)	0xc0 02 00 08
:lfs	fD,dPlusRaOrZeroAddress 	is $(NOTVLE) & OP=48 & fD & dPlusRaOrZeroAddress & ps1D
{
result:4 = *:4(dPlusRaOrZeroAddress);
fD = float2float(result);
ps1D = result;

}

I'm not an NSA dev and this is all my opinion and def could be wrong assuming, but I would be highly surprised if there's a clean work around for matching registers up if they're not at the same offset, which means changing the SLEIGH specification/language, and probably even the compiler specification, both of which seems unlikely in near term (and probably long).  Certainly since you can solve this with a macro in every instruction to mirror the values as needed, so its just an implementation detail.

Are you trying to force this module to work around an emulator issue and not the user manual? Your description of the emulator operations makes it seem like they just used 64-bit floats ignoring the description of the ps0/ps1 from the manual. They're 32-bit each and as a pair make 64-bit as you stated in your original post.

It's not some sort of emulator issue. The thing is that the 750CL (and therefore the Gekko, Broadway and Espresso) actually behaves like this in reality (according to the people we enquired), and the manual also supports this claim (This is true regardless of the value of HID[PSE]): "Architecturally, all single- and double-precision floating-point numbers are represented in double-precision format within the 750CL." (page 106)
Since the manual doesn't explicitly specify how the paired singles are represented, we are left to speculate on the implementation of these. Do they actually both use up 32 bits and therefore fit neatly into the FPRs, or are they also both 64-bit, with ps0 being the same as the fX register and ps1 using a separate location?
Another section in the manual reveals that it has to be the second option: "Loading an operand as a double and then storing it as a paired-single does not yield the original value back in memory", (page 83). This wouldn't hold up if they actually both shared the same memory.
Then again, that would contradict the illustration at the top of that page, which shows ps0 and ps1 being 32-bit and heavily implies that ps0 and ps1 overlap with fX.
Remember that double operations have to, somehow, choose between taking the 64-bit fX and the 32-bit ps0 register as an input if they actually did share the same storage and HID[PSE] == 1 (we're assuming that, for the time being).
We decided on making the fX, ps0 and ps1 registers separate since the manual states that no correlation should be made between the paired-single and double register representations ("The relationship between the internal format for paired-single operands and that for double-precision floating-point operands is unspecified.", page 83). I'd argue that the current implementation is just as valid.

Also having your single and double at two offsets seems like it would be a nightmare to handle cleanly in the cspec to the point that auto-analysis would have an extremely difficult time picking the right calling convention, which looks like the effect you're seeing maybe.

I don't think it'd be a huge issue. Really all what we want is for the decompiler to look for fX_ps0 if and only if it does not find prior definitions of fX in the current function, eliminating the in_fX variable (in case fX_ps0 is present).

Your instructions should just try to use the correct registers for the operands and your SLEIGH should use the FP pcode operations to toggle float<->double

That probably does seem to be the cleanest approach for now and is what we have most recently tested in trying to find a better solution. We just felt that it might be not true to what the processor does in actuality, but as the above findings show, it would probably also be correct per the manual.

so if its only ==1, why are you doing both operations (master)

In the current implementation, ps0 and fX must be kept in sync with each other when single-precision floating point instructions are being performed so that fX can be used when a double-precision floating point instruction is executed.

I would be highly surprised if there's a clean work around for matching registers up if they're not at the same offset, which means changing the SLEIGH specification/language, and probably even the compiler specification, both of which seems unlikely in near term (and probably long)

Very valid point. We would still be interested in hearing from the devs if this feature would even be up for consideration, though.


Add TableKit

Project URL
https://github.com/maxsokolov/TableKit
Description
Type-safe declarative table views with Swift.
Checklist

[x] Only one project is in this pull request
[x] Addition in chronological order (bottom of category)
[x] Travis CI pass
[x] Supports iOS 7 or later
[x] Has a commit from less than 2 years ago
[x] Has a clear README in English

Travis is failing for another reason

Thanks for contributing, @maxsokolov.
Really liked the declarative approach since setting up tableviews is a pain.
@morbix what do you think about it?

@lfarah is nice to see that I am not "alone in the dark" worry about the way we have to work with tables in iOS.  @maxsokolov congratulations. Take a look in my pods too. We could share some thoughts about our libs. =]

@lfarah thanks a lot! Yeah, tableviews is a pain, especially when you deal with really complex table views with lots of different cells. Declarative approach helps a lot, because you could build your table block by block. I've tried to provide the most flexible approach that is swifty :) generics play great there.
@Morbix thanks! I'll give it a try)


Update YOLACT integration docs

This PR updates YOLACT documentation in sparseml/integrations, The commands have been updated to use our new training flows and the setup instructions have been made simpler(cause of the latest refactor)
Big things to note:

[X] Updates Recipes
[X] Updates Yolact sparsification tutorial
[X] Updates integration Readme
[X] Remove setup_integrations.sh bash script (not needed anymore)

Great job. They say that every time a doc is written/refactored, somewhere a cute chinchilla is being born.

Hahahahaha. Chinchilla's are cute


According to the kubernetes official demo test network strategy failed

kubernetes version:1.24.4
calico version: v3.24.1
ipipmode: crosssubnet
As shown in the figure below, I follow the official kubernetes network isolation example step by step
document address：
https://kubernetes.io/docs/tasks/administer-cluster/declare-network-policy/
Until the end, even if --labels="access=true" is added, it is still inaccessible

ippool:

So just to verify, you can successfully communicate between your pods prior to creating the access-nginx policy?
Can you do a describe or get -o yaml on both access-nginx and your nginx pod?


Error while running "pip install -e spiral-envs/"

I am not sure why I am getting this error. I am not sure why the variables aren't getting set.
-- Configuring done
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
JSONC_LIBRARY
linked by target "pylibmypaint" in directory /students/u7043565/play/spiralpp/spiral-envs/spiral
X11
linked by target "OGLES2HelloAPI" in directory /students/u7043565/play/spiralpp/spiral-envs/third_party/swiftshader
-- Generating done
CMake Generate step failed.  Build files cannot be regenerated correctly.
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/students/u7043565/play/spiralpp/spiral-envs/setup.py", line 91, in <module>
    cmdclass={"build_ext": CMakeBuildExt},
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
    return distutils.core.setup(**attrs)
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/command/develop.py", line 34, in run
    self.install_for_development()
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/command/develop.py", line 136, in install_for_development
    self.run_command('build_ext')
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 985, in run_command
    cmd_obj.run()
  File "/students/u7043565/play/spiralpp/spiral-envs/setup.py", line 44, in run
    self.build_extension(ext)
  File "/students/u7043565/play/spiralpp/spiral-envs/setup.py", line 47, in build_extension
    self.configure_cmake(ext)
  File "/students/u7043565/play/spiralpp/spiral-envs/setup.py", line 70, in configure_cmake
    subprocess.check_call(configure_cmd, cwd=self.build_temp)
  File "/students/u7043565/miniconda3/envs/spiralpp/lib/python3.7/subprocess.py", line 363, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '/students/u7043565/play/spiralpp/spiral-envs', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=/students/u7043565/play/spiralpp/spiral-envs/spiral/envs', '-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=build/temp.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE:FILEPATH=/students/u7043565/miniconda3/envs/spiralpp/bin/python']' returned non-zero exit status 1.
----------------------------------------

ERROR: Command errored out with exit status 1: /students/u7043565/miniconda3/envs/spiralpp/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/students/u7043565/play/spiralpp/spiral-envs/setup.py'"'"'; file='"'"'/students/u7043565/play/spiralpp/spiral-envs/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.
Thank you for your time.

I think cmake couldn't find json-c. Can you show menwhat commands you ran? And also make sure you're using ubuntu 18.04.
If you want a quick fix, you can use docker. After installing docker, run $ docker build -t spiralpp . $ docker run --name spiralpp -it -p 8888:8888 spiralpp /bin/bash

Hi @urw7rs, I faced with this error after running this docker command in Ubuntu 18.04:
docker build -t spiralpp . && docker run --name spiralpp -it -p 8888:8888 spiralpp /bin/bash

Step 21/39 : RUN pip install -e .
 ---> Running in 6e0df36dd695
Obtaining file:///src/spiralpp/spiral-envs
Requirement already satisfied: six in /root/miniconda3/envs/spiralpp/lib/python3.7/site-packages (from spiral==1.0) (1.16.0)
Requirement already satisfied: scipy in /root/miniconda3/envs/spiralpp/lib/python3.7/site-packages (from spiral==1.0) (1.7.0)
Requirement already satisfied: numpy in /root/miniconda3/envs/spiralpp/lib/python3.7/site-packages (from spiral==1.0) (1.20.2)
Collecting gym
  Downloading gym-0.18.3.tar.gz (1.6 MB)
Collecting pyglet<=1.5.15,>=1.4.0
  Downloading pyglet-1.5.15-py3-none-any.whl (1.1 MB)
Collecting Pillow<=8.2.0
  Downloading Pillow-8.2.0-cp37-cp37m-manylinux1_x86_64.whl (3.0 MB)
Collecting cloudpickle<1.7.0,>=1.2.0
  Downloading cloudpickle-1.6.0-py3-none-any.whl (23 kB)
Building wheels for collected packages: gym
  Building wheel for gym (setup.py): started
  Building wheel for gym (setup.py): finished with status 'done'
  Created wheel for gym: filename=gym-0.18.3-py3-none-any.whl size=1657515 sha256=d2a6b44432cdd1951680213861f4217a5aab4f879c096a7c23bd935ad03d73f3
  Stored in directory: /root/.cache/pip/wheels/1a/ec/6d/705d53925f481ab70fd48ec7728558745eeae14dfda3b49c99
Successfully built gym
Installing collected packages: pyglet, Pillow, cloudpickle, gym, spiral
  Running setup.py develop for spiral
    ERROR: Command errored out with exit status 1:
     command: /root/miniconda3/envs/spiralpp/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/src/spiralpp/spiral-envs/setup.py'"'"'; __file__='"'"'/src/spiralpp/spiral-envs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps
         cwd: /src/spiralpp/spiral-envs/
    Complete output (64 lines):
    running develop
    running egg_info
    creating spiral.egg-info
    writing spiral.egg-info/PKG-INFO
    writing dependency_links to spiral.egg-info/dependency_links.txt
    writing requirements to spiral.egg-info/requires.txt
    writing top-level names to spiral.egg-info/top_level.txt
    writing manifest file 'spiral.egg-info/SOURCES.txt'
    reading manifest file 'spiral.egg-info/SOURCES.txt'
    writing manifest file 'spiral.egg-info/SOURCES.txt'
    running build_ext
    -- The C compiler identification is GNU 7.5.0
    -- The CXX compiler identification is GNU 7.5.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /usr/bin/cc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    CMake Error at /root/miniconda3/envs/spiralpp/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:218 (message):
      Could NOT find Python3 (missing: Python3_NumPy_INCLUDE_DIRS NumPy) (found
      version "3.8.5")
    Call Stack (most recent call first):
      /root/miniconda3/envs/spiralpp/share/cmake-3.19/Modules/FindPackageHandleStandardArgs.cmake:582 (_FPHSA_FAILURE_MESSAGE)
      /root/miniconda3/envs/spiralpp/share/cmake-3.19/Modules/FindPython/Support.cmake:3148 (find_package_handle_standard_args)
      /root/miniconda3/envs/spiralpp/share/cmake-3.19/Modules/FindPython3.cmake:398 (include)
      CMakeLists.txt:20 (find_package)

    -- Configuring incomplete, errors occurred!
    See also "/src/spiralpp/spiral-envs/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log".
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/src/spiralpp/spiral-envs/setup.py", line 91, in <module>
        cmdclass={"build_ext": CMakeBuildExt},
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/__init__.py", line 153, in setup
        return distutils.core.setup(**attrs)
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/command/develop.py", line 34, in run
        self.install_for_development()
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/site-packages/setuptools/command/develop.py", line 136, in install_for_development
        self.run_command('build_ext')
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/src/spiralpp/spiral-envs/setup.py", line 44, in run
        self.build_extension(ext)
      File "/src/spiralpp/spiral-envs/setup.py", line 47, in build_extension
        self.configure_cmake(ext)
      File "/src/spiralpp/spiral-envs/setup.py", line 70, in configure_cmake
        subprocess.check_call(configure_cmd, cwd=self.build_temp)
      File "/root/miniconda3/envs/spiralpp/lib/python3.7/subprocess.py", line 363, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['cmake', '/src/spiralpp/spiral-envs', '-DCMAKE_BUILD_TYPE=Release', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=/src/spiralpp/spiral-envs/spiral/envs', '-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=build/temp.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE:FILEPATH=/root/miniconda3/envs/spiralpp/bin/python']' returned non-zero exit status 1.
    ----------------------------------------
ERROR: Command errored out with exit status 1: /root/miniconda3/envs/spiralpp/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/src/spiralpp/spiral-envs/setup.py'"'"'; __file__='"'"'/src/spiralpp/spiral-envs/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.
The command '/bin/bash -c pip install -e .' returned a non-zero code: 1

Could you please help me to solve this.

I tried building the image and I got the same error. I'll try to fix it.

@coderkhaleesi, @iskanderandrews installing cmake 3.14 seems to solve the issue. I could build the docker image without errors.

@urw7rs Thanks so much for your helping on this.
I rechecked again and yea it pass the posted error, but got another new error:

Alright @urw7rs so I retried the same steps again in a different VM (Arch Linux), and the docker image built very well without any issues. And just now trying to download the Dataset manually celebahq in order to build the model.
So I think you can close this issue.
Thanks so much for your helping.

I tried to install pytorch using pip but grpc caused errors when building torchbeast. For now, Installing pytorch from source seems to be the only way. I'm glad I could help. I"ll close this issue and the badzipfile issue too.


Feature Request: Attach to a process with PID

We currently only support debugging by launching the program.
We should also consider attaching to a running process.
My personal simplified use case:
while debugging cppyy. I have the following code setup.
import os
print(os.getpid())
import cppyy

cppyy.cppdef("""
// code to compile
""")

# any additional setup code

breakpoint() # drops me to python debugger, then I attach gdb to this process and continue execution

# code used to debug

Essentially having a -p flag to gdb.


chore: remove graph-toolkit-productivity-hub-aspnetcore while not rea…

Currently dev branch is for v5 feature, this graph-toolkit-productivity-hub-aspnetcore not ready for the feature, so delete this sample.
You can find it on release branch for v4 features.
Once the sample is updated and adapted to v5, put the sample onboard to the dev branch.

https://msazure.visualstudio.com/Microsoft Teams Extensibility/_workitems/edit/17412949


Add logic to disallow child items in tree views

What changed?
This fixes #344, in a different way than #345.
I wanted to fix this issue, but I felt it's the role of the drop handler to decide whether an item should accept children or not (instead of handling this through a dependency property of the item). This also enables providing custom logic.
Problem is, at that point the IDropInfo is already populated with the "wrong" TargetCollection/InsertIndex info because everything is decided upfront in the constructor of DropInfo.
I didn't want to introduce a breaking change, so this solution isn't ideal. Please tell me if this approach is OK or if you'd prefer something else.
This adds a new AcceptChildItem property in DropInfo (specifically not in IDropInfo in order to avoid the breaking change), which will recalculate the relevant properties when set to false by the user.
Here's the result:

/cc @jizc

Here's some more info on this with a couple of screenshots:
On this case:

Note the cursor's position on top of the "Calculator" item even though the drop indicator shows that it will be dropped as a sibling (inside "Example sub-folder).
On the Drop handler, the dropinfo.Target here is "Calculator" (when I believe it should be "Example Sub-Folder")
And on this case:

Again, almost the same as above but note the cursor's position on top of "CMD".
The dropinfo.Target will be "CMD" (when again, I'm guessing it should be "Example Sub-Folder")
Hope this helps, cheers.

Hey, thanks for replying.
That's fine if it's by design and it's working great for the dropover event.
The issue I see is that on the drop event (which is where we would eventually do any needed model updates or any extra work after the drop is completed) there is apparently no direct reference on the dropInfo parameter to where the drag source was actually eventually dropped when using AcceptChildItem=false (which will drop it as a sibling and not a child).
So if we then follow something like the drop event example on the documentation, that dropInfo.TargetItem reference will always reference the exact item that we did not want to drop on by setting AcceptChildItem=false and therefore reference the wrong target.
But I get what you said, it's not really the wrong target. It's the correct target the mouse was over when it dropped, but just not the target where the object was eventually dropped, since it had AcceptChildItem=false.
I would still suggest that it would be very useful to add a reference to where it was actually dropped if this PR or something similar is ever merged.
Thanks again for this PR and for replying 👍

I would still suggest that it would be very useful to add a reference to where it was actually dropped if this PR or something similar is ever merged.

Yes, I agree this would be useful, but the API this PR currently provides doesn't make that easy, as DropInfo contains lots of properties, and I wouldn't like to add a RealTargetItem or similar.
Maybe changing the AcceptChildItem property into a RejectChildItem() method would solve the issue though. I suppose it wouldn't feel wrong to change TargetItem through a method, and you'd be able to call it several times to go up the hierarchy as needed (not sure how viable/useful that may be).
I'd like some input from @punker76 before I make this change though.

Though, it seems the current library design may make it necessary to keep the TargetItem as-is because of the InsertPosition property. I'm not sure how to solve this properly... 😕

No problem of course.
Thanks anyway for tackling this issue in the first place. The dropover behavior this PR adds and the AcceptChildItem=false parameter is working great and hopefully will eventually be added in one way or another.
In the meantime I'll probably just actually add some sort of RealTargetItem/FinalTargetItem property on my local copy since, like you, I was already pondering it as the quickest fix for my case, even if it may not be ideal for this project as a final solution.
Thanks again, cheers 👍

Any news on that? I encounter the same problem solved by this PR.

Any updates on this?

Sorry if it looks like I'm ignoring it. But it's not like that. It's on my TODO list.

@ltrzesniewski your changes have been merged, thanks for your contribution 👍


Structured Streaming Support

Description
Spark Streaming is EOL. The current library used is structured streaming. How hard would be to add support for it?

Hi @skonto
That's a good point. We don't know yet. It will be great to have support from the community to think about it.
Regards,
Heitor


Encryption/Decryption Duration

It will be great if you include an appx time to encrypt/decrypt a disk.

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

ID: e1db5eef-75ae-aeb0-5562-595d7a72a047
Version Independent ID: c2b5ff71-4a5c-ee59-4e8a-bf8501b86db8
Content: FAQ - Azure Disk Encryption for Windows VMs - Azure Virtual Machines
Content Source: articles/virtual-machines/windows/disk-encryption-faq.md
Service: virtual-machines
Sub-service: disks
GitHub Login: @msmbaldwin
Microsoft Alias: mbaldwin

@Elangamban, Thanks for the feedback! We are taking a look into this and will get back to you soon.

@Elangamban
Thanks for the feedback! I have assigned the issue to content author to check and update the document as appropriate.

@msmbaldwin
Can you please check and add your comments on this doc update request as applicable.

Please let us know if this is still an issue. #please-close


Add support for discord.py 2.0

Description
Adds support for discord.py 2.0
Checklist

[x] This PR has been tested.

Given DPY 2.0 currently does not have a semi-stable api, might be worth conscidering making a v2.0 branch?


[REQUEST] downloaders - transmission

For which application would like to see this Guide ?
Radarr / Sonarr / Bazarr / etc
Describe what you would like to see in the Tutorial/Guide
Some people still use transmission? might as well add notes about what version is supported/how to set it up for *arr

The reason why I didn't add transmission is because the support team doesn't recommend transmission for automation, mainly that transmission doesn't have categories, and yes there is a work around with folders, but still not optimal.
Till now the support team recommend

Qbt
deluge
rtorrent

ack, i only bring this up because in sonarr discord there seems to be a lot of transmission users lately and we tell them to go to trash guides and was shocked to not have it listed

I'm more shocked that any one tells them to use transmissions in the first place (especially a Pre-release ;) )
I'm not in Sonarr discord, and only keep track on the Servarr apps discord, and i think i only seen one asking about transmission, where the support team actually suggested to switch to another client, that actually support labels/categories.
Perhaps if transmission starts supporting labels/categories and is out of Pre-release i might add some info to the guide for it.

disclaimer: i dont use torrents, i just have been asking related stuff due to *arr support channels and such. i'm bias for usenet :)
Now, I know someone that is using transmission 2.94 from 2018! and in his sonarr transmission settings I see there is a category spot and seems to work fine..  which has been there for 7+ years now..  looks like sonarr/radarr just require transmission 2.4+

i use both, and i try to keep the guide up to date with the Starr apps support channel and suggestions, and i never seen someone from the support team suggest transmissions if someone aks which torrent client to use.
And when some ask a question about transmission they always been asked why they don't use a better torrent client that works better with automation.
Yes i do know the Starr apps support transmission but they also support other even worse crappy torrent clients that the support team never recommend and when someone ask about it they actually get minimal to no help for.
ex. utorrent, downloadstation etc etc
But I will keep a eye on it and keep in touch with the Starr support team (mainly Radarr being i'm only in toch with them) if it's really needed to provide a basic setup guide for transmission, as long as the support team doesn't name them in 1 line (Qbt => Deluge => rTorrent) as suggested torrent clients, i don't think it should be added to prevent extra not wanted support questions of a app/client that hardly any one uses.
Thnx for your feedback, and all the help with SABnzbd, a app i do recommend everyone as usenet client. (even that i don't use it myself because of a few personal minor annoyance that are getting less and less)


Is this project abandoned?

Just found this and it looks really neat, so I would like to try it out.
However, I saw that the last time ocornut/imgui was pulled was half a year ago, so it's missing tables among other things.
Is this project abandoned?

it's a bit behind i.e. not using ImGui 1.81 but it's not abandoned.
Feel free to create an MR that updates the ImGui to a newer version.

That's good to hear. I tried but could not get it to work, cimgui build and generation went fine(i think), but had issues with the generated c# I have no clue how to fix. Since I would be starting a new project tables would be nice to have from the start instead of dealing with the deprecated columns. Will keep an eye on this, but guess I'd be better of going another route for now.

You might want to follow/observe the discussion here:
https://github.com/mellinoe/ImGui.NET/pull/218
There is a branch with a (semi-)recent imgui 1.80 Version + ImPlot waiting for a merge.
Maybe you can start your project using that branch?

Thank you for the tip @sneusse, ImPlot would be a very nice thing to have as well.
I can only seem to find a branch targeting imgui 1.79, so no tables yet unfortunately.
I might have missed it?

@bob382 yeah sorry, you're right. I remembered that wrong. I tried to update the implot branch to 1.80 myself but couldn't quite get it done. 😊
I did't quite get the transformation of the .json files from the cimgui repo (https://github.com/cimgui/cimgui/tree/master/generator/output)
I ended up using the https://github.com/sonoro1234/LuaJIT-ImGui with a KeraLua+NLua Bridge (not sooo happy with that but it works)

@sneusse I am surprised because KeraLua+NLua does not seem to support LuaJIT and LuaJIT-ImGui is dependant on LuaJIT ffi.

Yeah I used this branch to start: https://github.com/fastcoding/NLua

@sneusse Thanks for trying :) I would love to use  this instead of wpf/winforms as well, seems like a solid replacement for my use.
Rapid UI development, cross-platform on to of that!

@sneusse #218 was updated to ImGui 1.82 and recent ImPlot. Recent native libraries can be found in the AppVeyor build artifacts of https://github.com/mellinoe/ImGui.NET-nativebuild/pull/3.

The project is not abandoned by any means. We're now back in sync with imgui v1.82, and @TillAlex has contributed some awesome new bindings for other cimgui-based projects.


[Events Request] codeunit 1340 "Undo Bank Statement (Yes/No)"

Please add events to the codeunit of the subject.
OnBeforeInsert/OnBeforeModify would be amazing:

OnAfter will force partners to do a modify() inside the event (if we can avoid it, better).
We are open to any event, but pls add some event to the codeunit.

Please define event placement in the code.

Added the images suggested...
(BTW the codeunit has just 3 modify and 2 inserts that correspond to the events requested, dunno where was the confusion there...)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: .


Support for cookies

Is your feature request related to a problem? Please describe.
Some backends use cookies to store session information and use them for auth. Right now, there is no provision to send cookies in any REST API calls.
Describe the solution you'd like
A simple button or a table-like UI which allows the user to set/unset cookies, to indicate that they will be sent in the next outgoing request.
I am also willing to make code contributions towards this feature.
Describe alternatives you've considered
NA
Additional context
NA

Thanks for the first request. I have been waiting for a filing since the project was public a year ago.
This feature request is good. I believe there is a demand. I need some time to do research to see how to handle this topic in a good way, as most of the recent projects I involved do not use cookies. It may take weeks. Non-REST HTTP communications might be applicable too.
I am glad that you are willing to code for this project! I will keep you updated.


'OnImageUpload' callback delete image from server issue

Basically, I want to upload and delete an image to the server as soon as the image is uploaded or deleted from the sunedtior respectively.
I've been successfully able to upload images to the server using the following 'imageUploadBefore' call back function
const onImageUploadBefore = (
    files: FileList,
    info: { imageUploadUrl: string; imageUploadHeader: string },
    uploadHandler: any
  ) => {

    const newFile = new File([files[0]], files[0].name, {
      type: files[0].type,
    });
    const formData = new FormData();
    formData.append("profile-file", newFile);

    uploadImage(formData, imageServerAxiosConfig)
      .then((res) => {
        // console.log(res);
        res.data.result[0].url =
          process.env.NEXT_PUBLIC_IMAGE_API_URL +
          res.data.result[0].url.replace(/\\/g, "/");
        uploadHandler(res.data);

        info.imageUploadUrl = res.data.result[0].url;
        info.imageUploadHeader = "url";

      })
      .catch((err) => {
        // console.log(err);
        alert("Image upload failed. Please try again later.");
      });
  };

But when I try to delete the image from the server using 'onImageUpload' callback
const onImageUpload = (
    targetImgElement: HTMLImageElement, index: number, state: string, imageInfo: object, remainingFilesCount: number
  ) => {
    console.log("Image upload callback");
    if(state === "delete"){
      // delete the image from the server

// ========================== **Issue Here** =========================
      console.log(targetImgElement, index, state, imageInfo, remainingFilesCount); // null, 0, 'delete', null, 0

      // const fileName = url.split("/").pop();
      // api.deleteImage(fileName as string, imageServerAxiosConfig)
      //   .then((res) => {
      //     // console.log(res);
      //   })
      //   .catch((err) => {
      //     alert("Image is not ")
      //   }
      // );
    }
  };

Essentially, I am getting no info on the image I am deleting.  Could you please figure out what should I do in order to grab the image Info for deleting the image from the server?
By the way, I really wanted to say this so badly. "suneditor" is really awesome. The effort you put into making docs and examples websites and fine-tuning js code is really jaw-dropping.  And the fact that it is an open-source makes it even more awesome.

Pls look into my issue!!

Sorry for the late reply :(
I'll check.

Currently, it is possible in a slightly cumbersome way.
const onImageUpload = (
    targetImgElement: HTMLImageElement, index: number, state: string, imageInfo: object, remainingFilesCount: number
  ) => {
    if(state === "delete"){
        console.log("fileInfo", editorInstance.core.context.image._infoList[index]);
    }
  };

I try your solution but when i console it's empty :(


How to hover across line chart in react native?

I have a line chart in which I render information for last 30 days. On pressing each data point I get the current points using onPressIn, however what I am looking for is that when I hover across chart I get current data point without onPress event(i.e. somewhat like a mouseOver event). I tried looking at this but still it works only with onPress.
I am looking for something like this  in react native  where I can just hover over and get the current info.
Is this possible to do this in Victory-native?

After exploring the package I was able to achieve this. Adding the code just in the case if it helps someone.
import {VictoryLine,VictoryVoronoiContainer,VictoryScatter,VictoryGroup,Point} from "victory-native";
import React from "react";
import {G,Line} from "react-native-svg";
import {View,Text} from "react-native";

class ChartPoint extends React.Component {
  state = {

  };

  render () {
    const {
      x,
      y,
      datum,
      activeX
    } = this.props;
    let size = 0;
    let lineContent = null;
    if (datum.x === activeX) {
      size = 10;
      lineContent = (
        <Line
          stroke="grey"
          strokeWidth="1"
          x1={x}
          x2={x}
          y1={y-200}
          y2={y+200}
        />
      );
    }
    return (
      <G>
        {lineContent}
        <Point
          datum={datum}
          size={size}
          symbol={"circle"}
          x={x}
          y={y}
        />
      </G>
    );
  }
}

export default class CustomDataComponent extends React.Component {
  state = {
    "x": 1
  };

  setActiveIndex = (points)  => {
    this.setState({"x": points[1].x});
  }

  render () {
    return (
      <View style={{"flex":1}}>
        <View style={{"marginVertical":20,"alignItems": "center","flex":0.2}}>
          <Text style={{"fontSize": 14}}>Date</Text>
          <Text style={{"fontSize": 16}}>{this.state.x}</Text>
        </View>
        <View style={{"flex":1}}>
          <VictoryGroup
            containerComponent={<VictoryVoronoiContainer
              onActivated={(points) => this.setActiveIndex(points)}
            />}
            data={[
              {"x": 1, "y": 2},
              {"x": 2, "y": 3},
              {"x": 3, "y": 5},
              {"x": 4, "y": 4},
              {"x": 5, "y": 7},
              {"x": 6, "y": 8}
            ]}
          >
            <VictoryLine
              style={{
                "data": {"stroke": "#c43a31"},
                "parent": {"border": "1px solid #ccc"}
              }}
            />
            <VictoryScatter
              dataComponent={<ChartPoint activeX={this.state.x} />}
            />
          </VictoryGroup>
        </View>
      </View>

    );
  }
}

ChartPoint.propTypes = {
  "activeX": React.PropTypes.number.isRequired,
  "datum": React.PropTypes.object.isRequired,
  "x": React.PropTypes.number.isRequired,
  "y": React.PropTypes.number.isRequired
};

The above gives me output like following:-

On scrolling across the chart the crosshair with marker changes based on current activeIndex.


Add import parameter to supply a fallback crs

Allow the user to set a fallback crs in case no crs is specified in the imported file

Resolves #134

@michel-kraemer please review

Merged.


[Test, don't merge] Revert "Support debug_symbols in VS optimized builds"

Reverts godotengine/godot#21179
Testing to see if it improves sluggish AppVeyor builds.

@elasota Seems it was indeed the problematic commit, see:

First build (2nd line) took 42 min, second build of same branch took 5 min.

So it seems like one of the changes break the AppVeyor cache.

Adding a new unrelated commit to test further that this PR's cache is still good.

Superseded by #21260.


fix /api/detail bug when scanning an uploaded target

Coverage decreased (-0.02%) to 36.589% when pulling 1dcbcf5b749832957da42df33eb9b3c27e38919f on 40huo:master into e674eed1c9cfbb590514d0a1470e7e88748c4ced on wufeifei:master.

Coverage increased (+0.3%) to 36.953% when pulling f7466bd2da4babe6a7918659e395d1681dff1f07 on 40huo:master into e674eed1c9cfbb590514d0a1470e7e88748c4ced on wufeifei:master.


Generate USFM-JS, including for aligned text, using Proskomma Render

This is happening in the mvh/usfmjs branch

This was done and is part of the roundtrip in #43


Unit tests failing building Fedora RPM

Hi,
I'm helping on Slim packaging on fedora from a while. Since 3.12, unit tests are failing in the build environment :/
On this try, PHP 7.3.5 RC1 is used, but result is the same with 7.2.17.
Log can be found here:
https://kojipkgs.fedoraproject.org//work/tasks/3317/34483317/build.log
You can find software versions at:
https://kojipkgs.fedoraproject.org//work/tasks/3317/34483317/root.log
Any idea what goes wrong? Thank you :)

It's hard to diagnose what's going on since the builds for that release pass just fine. The tests that are failing weren't affected by code from that release. I'm not sure what's going on here.
The failing tests are:
There were 3 failures:
1) Slim\Tests\AppTest::testResponseReplacesPreviouslySetHeaders
Failed asserting that Array &0 () is identical to Array &0 (
    0 => Array &1 (
        'header' => 'X-Foo: baz1'
        'replace' => true
        'status_code' => null
    )
    1 => Array &2 (
        'header' => 'X-Foo: baz2'
        'replace' => false
        'status_code' => null
    )
    2 => Array &3 (
        'header' => 'HTTP/1.1 200 OK'
        'replace' => true
        'status_code' => 200
    )
).
2) Slim\Tests\AppTest::testResponseDoesNotReplacePreviouslySetSetCookieHeaders
Failed asserting that Array &0 () is identical to Array &0 (
    0 => Array &1 (
        'header' => 'Set-Cookie: foo=bar'
        'replace' => false
        'status_code' => null
    )
    1 => Array &2 (
        'header' => 'Set-Cookie: bar=baz'
        'replace' => false
        'status_code' => null
    )
    2 => Array &3 (
        'header' => 'HTTP/1.1 200 OK'
        'replace' => true
        'status_code' => 200
    )
).
3) Slim\Tests\RouterTest::testCacheFileExistsAndIsNotReadable
Failed asserting that exception of type "\RuntimeException" is thrown.

Are there chances some of those failing tests requires an internet connexion? The build environment does not have access to internet.
Since project tests are OK, and usage seems ok; I can find a way to ignore them on packaging side at last; this is not a blocker ;)
Thank you.

@trasher no all tests can be run offline. This is kind of weird. Skipping those tests probably isn’t a good idea since that would mean Slim would break when trying to access that functionality. I’m not entirely sure what the best solution is here.

Well, I've already see tests failing only on the build env for another project I'm working on; and I've not been able to understand why :/
Packages are built in a chrooted environment, it fails on projects servers  and on my local computer. But tests are OK from the git clone.
I wonder if something is missing in the chroot, I'll check if dependencies are correct.
Let me know if you need informations or want me to try something.

is there any way for me to get a copy of the build env from within a container or access to a virtual box somewhere so I can fiddle with things and see what’s going on?

The software used to build packages is called mock:
https://github.com/rpm-software-management/mock
The SRPM is mandatory (an archive that contains SPEC file and sources):
https://kojipkgs.fedoraproject.org//work/tasks/3294/34483294/php-slim3-3.12.1-1.fc31.src.rpm
I've never used it outside of the standard build process, but it looks like it can be run from docker:
https://github.com/rpm-software-management/mock/wiki#mock-inside-docker
An alternative would be to install a minimal fedora in a virtual machine and install mock in it.
Hope that helps.

@trasher I think I found the issue. So it looks like the SPEC file creates its own bootstrapping files and omits from including the file tests\Assets\PhpFunctionOverrides.php
In your spec file you need to change the following lines from:
%check
sed -e \
        "s|dirname(__DIR__) . '/vendor/autoload.php'|'%{buildroot}%{slim_home}/autoload.php'|" \
        -e "s|\$autoloader->addPsr4.*$|require 'autoload.php';|" \
        -i tests/bootstrap.php

To:
%check
sed -e \
        "s|dirname(__DIR__) . '/vendor/autoload.php'|'%{buildroot}%{slim_home}/autoload.php'|" \
        -e "s|\$autoloader->addPsr4.*$|require 'autoload.php';\nrequire __DIR__ . '/Assets/PhpFunctionOverrides.php';|" \
        -i tests/bootstrap.php

I'm not entirely sure if it'll work or not but it looks like it's not loading the files from the autoload-dev section from the composer.json file since it's generating the autoloaders manually.
"autoload-dev": {
    "files": [
        "tests/Assets/PhpFunctionOverrides.php",
        "tests/Assets/PhpHttpFunctionOverrides.php" // This file will be added on the next release 3.12.2
    ]
},

Good catch, thank you! I did not check the dev part of the composer file; and I should have
Since tests are ok now, I can proceed the update. Thank you very much!


DSND-2942: Finish GET ACSP full profile mapping

Describe the changes

Updates private sdk version to bring in full profile spec.
Maps an ACSP profile document to a full profile API response.

Related Jira tickets
DSND-2942
Developer check list
General

[ ] Is the PR as small as it can be?
[ ] Has the Jira ticket been updated with any relevant comments?
[ ] Is the README up to date?
[ ] Has the POM been updated for the latest versions of dependencies?
[ ] Has the code been double-checked against main?
[ ] Does the code adhere standards in this repository, including SonarQube checks?

Testing

[ ] Do the code changes have unit and integration tests with code coverage > 80%?
[ ] Has the code been tested locally and/or passed the API Karate tests on Tilt?
[ ] Have mandatory manual test cases been run?
[ ] Are extra Karate tests required?
[ ] Are all the test data resources up to date?

Release preparation
Where possible, add links to the respective Jira tickets when an item is checked

[ ] Have these changes been included in a release ticket?
[ ] Are changes required to the docker-chs-development deployment or test data?
[ ] Are any changes required to the environment added to deployment repositories?

Notes to the tester
Add any testing hints or instructions here.

CI: No security warnings found


Separate engine workflow depending on whether nested mutations are on/off

The purpose of the issue is to track the efforts needed for
a) Consuming the feature flag fields in the config file
b) Adding different code paths in the engine based on whether the feature flag is enabled or disabled

The content of this issue has no grammatical errors! ;)

The reasoning around this issue includes giving the ability for developers to avoid any startup cost associated with nested mutations. Developers can already change read/write permissions of entities which can effectively disable mutations. The nuance here is that disabling them globally can mean the engine doesn't have to compute the schema at startup. Please refer to #1950

The reasoning around this issue includes giving the ability for developers to avoid any startup cost associated with nested mutations. Developers can already change read/write permissions of entities which can effectively disable mutations. The nuance here is that disabling them globally can mean the engine doesn't have to compute the schema at startup. Please refer to #1950

Thank you for adding this. Updated the description.
When the feature is disabled, the schema will be generated the way it is right now; thus avoiding additional computations, memory utilized etc.

Follows up the work from #1950


exec mixin adding line break with use of output from previous step, blows yaml at rendering

Describe the bug
Reuse of an output from a previous step introduces a line break in the rendered yaml, blowing up the pipeline.
To Reproduce
Steps to reproduce the behavior:

The following yaml (from this repository: https://github.com/squillace/microservices-reference-implementation)

  - exec:
      command: bash
      description: "IDENTITIES_DEPLOYMENT_NAME"
      flags:
        c: az deployment show -n azuredeploy-prereqs-dev --query properties.outputs.identitiesDeploymentName.value -o tsv
      outputs:
        - name: IDENTITIES_DEPLOYMENT_NAME
          regex: "(.*)"
  - exec:
      command: bash
      description: "testing for a space"
      flags:
        c: echo \"{{bundle.outputs.IDENTITIES_DEPLOYMENT_NAME}}\"

Results in the following error:

=== Rendered Step ===
exec:
  command: bash
  description: testing for a space
  flags:
    c: echo \"azuredeploy-prereqs-dev-identities
\"

Error: unable to resolve step: invalid step yaml
exec:
  command: bash
  description: testing for a space
  flags:
    c: echo \"azuredeploy-prereqs-dev-identities
\"
: yaml: line 7: could not find expected ':'

Below is the full error stack.
IDENTITIES_DEPLOYMENT_NAME
DEBUG name:    exec
DEBUG pkgDir: /cnab/app/mixins/exec
DEBUG file:
DEBUG stdin:
install:
- exec:
    command: bash
    description: IDENTITIES_DEPLOYMENT_NAME
    flags:
      c: az deployment show -n azuredeploy-prereqs-dev --query properties.outputs.identitiesDeploymentName.value
        -o tsv
    outputs:
    - name: IDENTITIES_DEPLOYMENT_NAME
      regex: (.*)

/cnab/app/mixins/exec/exec-runtime install --debug
DEBUG Parsed Input:
&exec.Action{Steps:[]exec.Step{exec.Step{Instruction:exec.Instruction{Description:"IDENTITIES_DEPLOYMENT_NAME", Command:"bash", Arguments:[]string(nil), Flags:builder.Flags{builder.Flag{Name:"c", Values:[]string{"az deployment show -n azuredeploy-prereqs-dev --query properties.outputs.identitiesDeploymentName.value -o tsv"}}}, Outputs:[]exec.Output{exec.Output{Name:"IDENTITIES_DEPLOYMENT_NAME", FilePath:"", JsonPath:"", Regex:"(.*)"}}}}}}
bash -c az deployment show -n azuredeploy-prereqs-dev --query properties.outputs.identitiesDeploymentName.value -o tsv
azuredeploy-prereqs-dev-identities
Processing regex output IDENTITIES_DEPLOYMENT_NAME...=== Step Data ===
map[bundle:map[credentials:map[SP_APP_ID:******* SP_CLIENT_SECRET:******* SP_OBJECT_ID:******* SSH_PUBLIC_KEY_FILE:******* SUBSCRIPTION_ID:******* SUBSCRIPTION_NAME:******* TENANT_ID:*******] dependencies:map[] description:A bundle to deliver the basic infrastructure portion of the Microsoft Patterns & Practices Microservices Reference Implementation located at https://github.com/mspnp/microservices-reference-implementation . Full documentation for this implementation can be read at https://docs.microsoft.com/azure/architecture/microservices/.  images:map[] invocationImage:squillace/mspnp-infra-install:v0.1.0 name:microservices-reference-infra-basic outputs:map[IDENTITIES_DEPLOYMENT_NAME:azuredeploy-prereqs-dev-identities
] parameters:map[LOCATION:westus2 RESOURCE_GROUP:mspnp-ref-impl] version:0.1.0]]
=== Step Template ===
exec:
  command: bash
  description: testing for a space
  flags:
    c: echo \"{{bundle.outputs.IDENTITIES_DEPLOYMENT_NAME}}\"

=== Rendered Step ===
exec:
  command: bash
  description: testing for a space
  flags:
    c: echo \"azuredeploy-prereqs-dev-identities
\"

Error: unable to resolve step: invalid step yaml
exec:
  command: bash
  description: testing for a space
  flags:
    c: echo \"azuredeploy-prereqs-dev-identities
\"
: yaml: line 7: could not find expected ':'
Resolved storage plugin to storage.porter.filesystem
/home/ralph/.porter/porter plugin run storage.porter.filesystem
Error: 1 error occurred:
        * failed to install the bundle: container exit code: 1, message: <nil>

See error above

Expected behavior
"azuredeploy-prereqs-dev-identities"
Porter Command and Output
$ porter install -c credsfile

lots of output

Version
Copy the output of porter version below
porter v0.23.0-beta.1 (9c49056)

Just to clarify so that I'm helping with the right thing here. Are you asking for a workaround to use the output with the newline? Or are you asking why the newline is there to begin with?

Closing because the newline is tracked to a bug in the Azure group deployment --query -o tsv command.
╭─ralph at surfacebook in ~/work/nogo/squillace/testing/microservices-reference-implementation on master✘✘✘ using
╰─± cat ~/.porter/claims/HELLO.json | jq '.outputs'
{
  "IDENTITIES_DEPLOYMENT_NAME": "azuredeploy-prereqs-dev-identities\n"
}

the newline is sitting right there, waiting for me.

reopening the issue with a new repo to demonstrate. https://github.com/squillace/mspnp-testing shows the creation of a bunch of identities in yaml only, but the output regex MUST be captured with \s to eliminate any whitespace outside the capture group.
whilst there is a workaround, I cannot myself identify the whitespace coming out of azure; it seems to be adding the whitespace in the porter regex capture process. BUT, if I'm wrong, this repo will help identify the problem.

@squillace I think we identified that the whitespace was coming from the az command itself. Can you confirm that's the case and that it is safe to close this issue?


New programming standards changes

Updates:
Question attribute layout
Addition of tab shortcuts
Unicode clean up

You could remove <marker name="qualified"/> from all the footers. Its no longer needed with the recent compats.


Disabled modelview buttons aren't dark theme friendly

Removing Accessibility label since we only open contrast-related accessibility bugs against the High Contrast theme.


fix: add missing header when creating an issue

Description
Fix an issue where the user is not able to create an issue because a header is missing in the fetch request.
To-Dos

[x] Successful build pnpm build
[ ] Translation keys pnpm i18n:extract
[ ] Database migration (if required)

:tada: This PR is included in version 2.0.0 :tada:
The release is available on:

v2.0.0
GitHub release

Your semantic-release bot :package::rocket:


Resolves #71: cleanup unused and legacy contracts

This PR:

removes unused contracts LnBandProtocol and LnChainLinkPrices; and
moves legacy contracts HbtcStakingPool, LnAdmin, and LnEndAdmin into a separate folder; and
rewrites LnDefaultPrices, the oracle contract used in test cases, into MockLnPrices and updates test code to reflect the changes.

This is a cleanup PR without any production contract code changes. Will merge without approvals.


merge from arlac77/template-github,arlac77/template-kronos-component

README.md

docs(README): update from template

Codecov Report

Merging #919 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #919   +/-   ##
=======================================
  Coverage   96.22%   96.22%
=======================================
  Files           2        2
  Lines          53       53
  Branches        2        2
=======================================
  Hits           51       51
  Misses          2        2

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 eac8268...d5ca905. Read the comment docs.


installation error osx

>sw_vers
ProductName:	Mac OS X
ProductVersion:	10.10.5
BuildVersion:	14F27
>node -v
v4.0.0
>npm -v
2.14.2
> npm install segfault-handler

npm WARN package.json @ No description
npm WARN package.json @ No repository field.
npm WARN package.json @ No README data
npm WARN package.json @ No license field.
\
><EMAIL_ADDRESS>install /devel/source/xxxxx/apps/services/test/api/node_modules/segfault-handler
> node-gyp rebuild

gyp: /Users/xxxxx/.node-gyp/4.0.0/common.gypi not found (cwd: /devel/source/xxxxx/apps/services/test/api/node_modules/segfault-handler) while reading includes of binding.gyp while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:357:16)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 14.5.0
gyp ERR! command "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/bin/node" "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /devel/source/xxxxx/apps/services/test/api/node_modules/segfault-handler
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v2.0.2
gyp ERR! not ok
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/bin/node" "/usr/local/opt/nvm/versions/node/v4.0.0/bin/npm" "install" "segfault-handler"
npm ERR! node v4.0.0
npm ERR! npm  v2.14.2
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the segfault-handler package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls segfault-handler
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /devel/source/xxxxxx/apps/services/test/api/npm-debug.log

poking around ~/.node-gyp/4.0.0/common.gypi is now  ~/.node-gyp/4.0.0/include/node/common.gypi

Hi @RamonDonnell
We don't have any additional functionality over the standard gyp implementation.
i.e. we don't specify ~/.node-gyp/4.0.0/common.gypi in our build scripts anywhere
So this looks like gyp issue.
I know node-gyp was bumped to 3.0.1 yesterday for 4.0.0 and you appear to be using node-gyp -v v2.0.2
Can you update to latest node-gyp and try again please.

should've picked that up. Upped to 3.0.1, this solved my original segfault issue, so don't need segfault-handler anymore.
Tried to install anyway, gives the following.

npm WARN package.json<EMAIL_ADDRESS>No license field.
/
><EMAIL_ADDRESS>install /devel/source/xxxx/apps/node_modules/segfault-handler
> node-gyp rebuild

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

CXX(target) Release/obj.target/segfault-handler/src/segfault-handler.o
In file included from ../src/segfault-handler.cpp:16:
../node_modules/nan/nan.h:324:27: error: redefinition of 'NanEnsureHandleOrPersistent'
NAN_INLINE v8::Local<T> NanEnsureHandleOrPersistent(const v8::Local<T> &val) {
^
../node_modules/nan/nan.h:319:17: note: previous definition is here
	v8::Handle<T> NanEnsureHandleOrPersistent(const v8::Handle<T> &val) {
	^
	../node_modules/nan/nan.h:344:27: error: redefinition of 'NanEnsureLocal'
		NAN_INLINE v8::Local<T> NanEnsureLocal(const v8::Handle<T> &val) {
		^
		../node_modules/nan/nan.h:334:27: note: previous definition is here
			NAN_INLINE v8::Local<T> NanEnsureLocal(const v8::Local<T> &val) {
			^
			../node_modules/nan/nan.h:757:13: error: no member named 'smalloc' in namespace 'node'
					, node::smalloc::FreeCallback callback
				~~~~~~^
			../node_modules/nan/nan.h:768:12: error: no matching function for call to 'New'
				return node::Buffer::New(v8::Isolate::GetCurrent(), data, size);
			^~~~~~~~~~~~~~~~~
					/Users/xxxx/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: candidate function not viable: no known conversion from 'uint32_t' (aka 'unsigned int') to 'enum encoding' for 3rd argument
				NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
			^
				/Users/xxxx/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: candidate function not viable: 2nd argument ('const char *') would lose const qualifier
				NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
			^
				/Users/xxxx/.node-gyp/4.0.0/include/node/node_buffer.h:28:40: note: candidate function not viable: requires 2 arguments, but 3 were provided
				NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
			^
				/Users/xxxx/.node-gyp/4.0.0/include/node/node_buffer.h:36:40: note: candidate function not viable: requires 5 arguments, but 3 were provided
				NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
			^
				In file included from ../src/segfault-handler.cpp:16:
			../node_modules/nan/nan.h:772:12: error: no viable conversion from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
				return node::Buffer::New(v8::Isolate::GetCurrent(), size);
			^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
					/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:210:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'v8::MaybeLocal<v8::Object>' to 'const v8::Local<v8::Object> &' for 1st argument
				class Local {
				^
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:210:7: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object> &&' for 1st argument
						class Local {
				^
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:214:13: note: candidate template ignored: could not match 'Local' against 'MaybeLocal'
					V8_INLINE Local(Local<S> that)
				^
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:326:13: note: candidate template ignored: could not match 'S *' against 'v8::MaybeLocal<v8::Object>'
					V8_INLINE Local(S* that)
				^
					In file included from ../src/segfault-handler.cpp:16:
				../node_modules/nan/nan.h:779:26: error: no member named 'Use' in namespace 'node::Buffer'
						return node::Buffer::Use(v8::Isolate::GetCurrent(), data, size);
				~~~~~~~~~~~~~~^
					In file included from ../src/segfault-handler.cpp:11:
					In file included from /Users/xxxx/.node-gyp/4.0.0/include/node/node.h:42:
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:221:5: error: assigning to 'v8::Primitive *volatile' from incompatible type 'v8::Value *'
					TYPE_CHECK(T, S);
				^~~~~~~~~~~~~~~~
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:180:37: note: expanded from macro 'TYPE_CHECK'
						*(static_cast<T* volatile*>(0)) = static_cast<S*>(0);      \
				^ ~~~~~~~~~~~~~~~~~~
				../node_modules/nan/nan.h:501:12: note: in instantiation of function template specialization 'v8::Local<v8::Primitive>::Local<v8::Value>' requested here
						return NanEscapeScope(NanNew(v8::Undefined(v8::Isolate::GetCurrent())));
				^
				../node_modules/nan/nan.h:483:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(Nan::imp::NanEnsureLocal(val))
				^
					In file included from ../src/segfault-handler.cpp:11:
					In file included from /Users/xxxx/.node-gyp/4.0.0/include/node/node.h:42:
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:221:5: error: assigning to 'v8::Boolean *volatile' from incompatible type 'v8::Value *'
					TYPE_CHECK(T, S);
				^~~~~~~~~~~~~~~~
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:180:37: note: expanded from macro 'TYPE_CHECK'
						*(static_cast<T* volatile*>(0)) = static_cast<S*>(0);      \
				^ ~~~~~~~~~~~~~~~~~~
				../node_modules/nan/nan.h:511:12: note: in instantiation of function template specialization 'v8::Local<v8::Boolean>::Local<v8::Value>' requested here
						return NanEscapeScope(NanNew(v8::True(v8::Isolate::GetCurrent())));
				^
				../node_modules/nan/nan.h:483:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(Nan::imp::NanEnsureLocal(val))
				^
					In file included from ../src/segfault-handler.cpp:11:
					In file included from /Users/xxxx/.node-gyp/4.0.0/include/node/node.h:42:
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:221:5: error: assigning to 'v8::Function *volatile' from incompatible type 'v8::Value *'
					TYPE_CHECK(T, S);
				^~~~~~~~~~~~~~~~
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:180:37: note: expanded from macro 'TYPE_CHECK'
						*(static_cast<T* volatile*>(0)) = static_cast<S*>(0);      \
				^ ~~~~~~~~~~~~~~~~~~
				../node_modules/nan/nan.h:1645:12: note: in instantiation of function template specialization 'v8::Local<v8::Function>::Local<v8::Value>' requested here
						return NanEscapeScope(NanNew(handle)->Get(kCallbackIndex)
				^
				../node_modules/nan/nan.h:483:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(Nan::imp::NanEnsureLocal(val))
				^
					In file included from ../src/segfault-handler.cpp:11:
					In file included from /Users/xxxx/.node-gyp/4.0.0/include/node/node.h:42:
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:221:5: error: assigning to 'v8::Object *volatile' from incompatible type 'v8::Value *'
					TYPE_CHECK(T, S);
				^~~~~~~~~~~~~~~~
				/Users/xxxx/.node-gyp/4.0.0/include/node/v8.h:180:37: note: expanded from macro 'TYPE_CHECK'
						*(static_cast<T* volatile*>(0)) = static_cast<S*>(0);      \
				^ ~~~~~~~~~~~~~~~~~~
				../node_modules/nan/nan.h:1776:12: note: in instantiation of function template specialization 'v8::Local<v8::Object>::Local<v8::Value>' requested here
						return NanEscapeScope(
				^
				../node_modules/nan/nan.h:483:30: note: expanded from macro 'NanEscapeScope'
# define NanEscapeScope(val) scope.Escape(Nan::imp::NanEnsureLocal(val))
				^
						10 errors generated.
					make: *** [Release/obj.target/segfault-handler/src/segfault-handler.o] Error 1
					gyp ERR! build error
					gyp ERR! stack Error: `make` failed with exit code: 2
					gyp ERR! stack     at ChildProcess.onExit (/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
					gyp ERR! stack     at emitTwo (events.js:87:13)
					gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
					gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
					gyp ERR! System Darwin 14.5.0
					gyp ERR! command "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/bin/node" "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
					gyp ERR! cwd /devel/source/xxxx/apps/node_modules/segfault-handler
					gyp ERR! node -v v4.0.0
					gyp ERR! node-gyp -v v3.0.1
					gyp ERR! not ok
					npm ERR! Darwin 14.5.0
					npm ERR! argv "/usr/local/Cellar/nvm/0.26.1/versions/node/v4.0.0/bin/node" "/usr/local/opt/nvm/versions/node/v4.0.0/bin/npm" "install" "segfault-handler"
					npm ERR! node v4.0.0
					npm ERR! npm  v2.14.2
					npm ERR! code ELIFECYCLE

					npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
					npm ERR! Exit status 1
					npm ERR!
					npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-gyp rebuild'.
					npm ERR! This is most likely a problem with the segfault-handler package,
					npm ERR! not with npm itself.
					npm ERR! Tell the author that this fails on your system:
					npm ERR!     node-gyp rebuild
					npm ERR! You can get their info via:
					npm ERR!     npm owner ls segfault-handler
					npm ERR! There is likely additional logging output above.

					npm ERR! Please include the following file with any support request:
					npm ERR!     /devel/source/xxxx/apps/npm-debug.log

So we get similar issues on linux
I have bumped the version of nan and that fixes it on the platform
Can you verify buy cloning this repo and 'npm install'
Thanks

no worries
> git clone git@github.com:ddopson/node-segfault-handler.git; cd node-segfault-handler
> npm install
npm WARN package.json<EMAIL_ADDRESS>No repository field.
npm WARN package.json<EMAIL_ADDRESS>No license field.
/
><EMAIL_ADDRESS>install /devel/source/node-segfault-handler
> node-gyp rebuild

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

  CXX(target) Release/obj.target/segfault-handler/src/segfault-handler.o
  SOLINK_MODULE(target) Release/segfault-handler.node
<EMAIL_ADDRESS>node_modules/bindings

<EMAIL_ADDRESS>node_modules/nan

@RamonDonnell did that build for you or is xcode configuration getting int the way?

@No9 used npm install ddopson/node-segfault-handler and it works fine, trying from the old one on npm crashes because nan wasn't updated.

Right hopefully @ddopson will add me to npm too so we can land this
https://github.com/ddopson/node-segfault-handler/commit/62d9a7f0ab449cc4994dddf34e1ecbc5446e08cb

Hey @RamonDonnell That pull mentioned above landed can we close this?


What are the rules of the metadata extension in terrain

Hi there! I'm new to cesium,and i'm using Cesium World Terrain provided by ion,of cause it's contains water mask and metadata,and there has a function createQuantizedMeshTerrainData in CesiumTerrainProvider.js.When QuantizedMeshExtensionIds is 4,it means metadata,so create a Quadtree.So what's the rules of the metadata extension in terrain?
I only know some that:
terrain is tms standard service.
Level0 is 000 and 010,and when comes to level1,the 000 is divided into four tiles,so
Level1:{endX: 1, endY: 1, startX: 0, startY: 0}
Level2:{endX: 3, endY: 3, startX: 0, startY: 0}
Level3:{endX: 7, endY: 7, startX: 0, startY: 0}
Level4:{endX: 15, endY: 15, startX: 0, startY: 0}
but,when comes to Level5,it's divided into three area:
{endX: 21, endY: 31, startX: 0, startY: 0}
{endX: 31, endY: 5, startX: 22, startY: 0}
{endX: 31, endY: 31, startX: 22, startY: 6}
and Level6,Level7,Level8 also be divided into three area.When comes to Level9,it's divided into 226 area:
{endX: 355, endY: 298, startX: 298, startY: 213}
{endX: 355, endY: 426, startX: 298, startY: 369}
{endX: 355, endY: 113, startX: 284, startY: 99}
{endX: 341, endY: 212, startX: 298, startY: 128}
......
So may I know the rules of area or block?

Hi @zhangiser, Cesium World Terrain is quantized mesh format. That link contains an explanation of the format and how metadata works.
Cesium is a big project, so we use GitHub for feature requests and bug tracking exclusively. If you have any further questions, I would ask that you take this to the Cesium Forum where there are members of the community and developers from the team who can help. Thanks!

Hi @zhangiser, Cesium World Terrain is quantized mesh format. That link contains an explanation of the format and how metadata works.
Cesium is a big project, so we use GitHub for feature requests and bug tracking exclusively. If you have any further questions, I would ask that you take this to the Cesium Forum where there are members of the community and developers from the team who can help. Thanks!

Thanks, i saw this page many times but cannot got anything useful else.


ROX-23528: Add integration name + insecure flag to logs/errors

Description
To assist with future troubleshooting, this PR enhances the delegated scanning logs and errors:

Changes the word registry to integration to match what a user would understand

registry was only meaningful when looking at the code.

Adds the integration name to the messages associated with each metadata pull failure

This enables confirming if image <-> registry matching is expected.

Adds value of the 'insecure' flag to the metadata pull failure msg as well.

For integrations built from pull secrets this flag is determined at runtime by performing a TLS Check
Knowing the value of the flag may help troubleshooting connectivity failures.

Checklist

[ ] Investigated and inspected CI test results
[x] Unit test and regression tests added
[x] Evaluated and added CHANGELOG entry if required
[x] Determined and documented upgrade steps
[x] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

Testing Performed
Deployed to infra clusters and delegated scans for images that do not exist:
Before
Outputs edited for clarity
$ rctl image scan --image=quay.io/dcaravel/no:exist --cluster=remote
ERROR:	Scanning image failed: could not scan image: "quay.io/dcaravel/no:exist": rpc error: code = Internal desc = error delegating scan to cluster "9b2ba00d-f4b3-4bcf-bc72-9971ea97917c" for "quay.io/dcaravel/no:exist": image enrichment errors: [

failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=404 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body="")].

Retrying after 3 seconds...

Notice 4 duplicate errors occurred, unclear why.   Similarly in sensor logs:
delegated_registry_handler.go:131: Error: Scan failed for req "c0f1125d-3ece-418e-8d8d-b4627e8f717e" image "quay.io/dcaravel/no:exist": image enrichment errors: [

failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=404 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body="")]

After
$ rctl image scan --image=quay.io/dcaravel/no:exist --cluster=remote
ERROR:	Scanning image failed: could not scan image: "quay.io/dcaravel/no:exist": rpc error: code = Internal desc = error delegating scan to cluster "9b2ba00d-f4b3-4bcf-bc72-9971ea97917c" for "quay.io/dcaravel/no:exist": image enrichment errors: [

with integration "Quay Dave Global Pull" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
with integration "Quay Dave Personal" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=404 body=""),
with integration "Public Quay.io" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
with integration "Global/reg:quay.io" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body="")].

Retrying after 3 seconds...

delegated_registry_handler.go:131: Error: Scan failed for req "95f622b1-6428-40e8-8cc4-20d73ebbc3f2" image "quay.io/dcaravel/no:exist": image enrichment errors: [

with integration "Quay Dave Global Pull" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
with integration "Quay Dave Personal" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=404 body=""),
with integration "Public Quay.io" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body=""),
with integration "Global/reg:quay.io" (insecure: false): failed to get the manifest digest: Head "https://quay.io/v2/dcaravel/no/manifests/exist": http: non-successful response (status=401 body="")]

Moving back to draft while addressing unit test failures.

/retest

Changes the word registry to integration to match what a user would understand
registry was only meaningful when looking at the code.

what about registry integration? That way we still know it's a registry

/retest


Fixed a typo

Changed "The follow entities in Microsoft Graph may contain one or more drives:" to "The following entities in Microsoft Graph may contain one or more drives:"

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

File
Status
Preview URL
Details

docs/rest-api/index.md
:bulb:Suggestion
View (>= odsp-graph-online)
Details

docs/rest-api/index.md

Line 2, Column 1: [Suggestion: description-missing - See documentation] Missing required attribute: 'description'.
Line 207, Column 3: [Suggestion: docs-link-absolute - See documentation] Absolute link 'https://docs.microsoft.com/legal/microsoft-apis/terms-of-use' will be broken in isolated environments. Replace with a relative link.

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


Migrate this gem to something more sustainable

It is unsustainable to proliferate gems like this: we simply cannot continue to maintain them, and this gem in particular has been out of the maintenance loop for months. This gem should, if at all possible, become a skin of the generic metanorma-acme gem, which is being maintained.

Agree. This gem should be a skin of Acme. It will be worthwhile to do this which allows us to make customization thinner for enterprise gems or for smaller SDOs (and therefore more scalable).

This is a priority to assign to someone new to the stack, since gem skinning is explicitly documented. I don't see any behaviour at all specific to VSD (the keywords under https://github.com/metanorma/metanorma-vsd/blob/master/lib/isodoc/vsd/metadata.rb are now redundant).
@skalee or @zoras, if you're looking for a project to get familiar with the stack with, this is a good one.
@ronaldtse The VSD customer would presumably need to be informed about the change.

Congratulations,@skalee, you're doing this.
The task is to take the existing metanorma-vsd gem (a Gem about which I know nothing), and to convert it into an instance of metanorma-acme: a Gem that takes CSS and HTML templates as arguments for any customisation (currently: as document header attributes of any input documents), as opposed to changing any code in the gem proper.
The result will be to get rid of metanorma-vsd as a distinct gem, and alleviate our maintenance burden. All the code needed to get VSD behaviour should be contained in metanorma-acme; it should just be configurable through external files (CSS and HTML).
https://www.metanorma.com/builder/howto/adopting-toolchain/ is about creating new gems in general, but the intent here is that you don't need to create a new gem at all. To that end, you will likely need to create config files in metanorma-acme, that the VSD instance can use. In particular, a config file for the org name and namespace, which is currently contained in https://github.com/metanorma/metanorma-acme/blob/master/lib/metanorma/acme.rb
Consult https://www.metanorma.com/author/ref/document-attributes/ for the Asciidoctor document attributes that would be used to customise output of the metanorma-acme gem to match VSD: in particular, :i18nyaml:, and the "Visual appearance" group of attributes.
Eventually we would like to apply the same customisation to other gems, notably metanorma-rsd, potentially metanorma-csd, metanorma-csand, metanorma-m3d
I'm not sure whether this task makes sense to you; please contact me for clarification if not. It will serve as an introduction to how the stack works, and @ronaldtse thinks you will find plenty of things along the way to refactor...

Sounds great!

Let me clarify. What we want is to generalize the acme gem to support VSD and some others. The key point is to NOT expose any template or css to the user.

@opoudjis I don’t think the right solution is to put VSD and other enterprise flavors inside the metanorma-acme gem. That’s just wrong. Remember the enterprises are supposed to be able to customize their own templates. Instead, try to streamline the metanorma-vsd gem (ie based on acme) and make it into a gem like “mn-style-vsd” or something like that; something the user can easily customize. And MN should be able to load these style/layout gems automatically.

...
I want to see this activity result in the removal of metanorma-vsd and metanorma-rsd as distinct gems, which need to be tested and maintained separately, even though their code is the same, and they differ only in rendering and organisation names.
The entire point of this exercise is to cut down on the number of gems we need to maintain. If a single gem cannot be applied to all flavours of Metanorma that deviate minimally from metanorma-acme, then there is no point to it.
I'll add that a gem like mn-style-vsd is not something that a low-tech enterprise can maintain to begin with. The configuration specific to each enterprise should be a single config file.
So, @skalee.
There is information that right now is treated as document attributes of documents under the metanorma-acme gem (e.g. htmlstylesheet). There is also information that right now is treated as constants in lib/metanorma/acme.rb.
To comply with Ronald's requirements, I would prefer these attributes to be extracted into a local config file, that different enterprise users of the metanorma-acme gem can customise to point to different stylesheets and HTML files and org names.
Ultimately, you and Ronald can work out how you want to realise this. @ronaldtse if you want this to look different, you discuss it with Sebastian. But any solution that involves me maintaining a distinct gem for VSD and for RSD is a fail.

Ok, had a discussion with Ronald. This is the plan. I am only incompletely explaining it, because I don't understand the whole stack.
At the moment, there are template repositories in place for some flavours of Metanorma. The metanorma-cli executable understands how to talk to these template repositories. Somehow, and I am not interested in finding out how. You will need to.
Certain attributes used for styling of flavours of Metanorma will be stored on skinning repositories on github. Metanorma-cli will be able to interact with the skinning repository for the nominated flavour, and obtain the correct values for those skinning attributes. (And indeed the files themselves.)
You will note that the following document attributes contain rendering information, nominating local files:

:i18nyaml:
:htmlstylesheet:
:htmlcoverpage:
:htmlintropage:
:scripts:
:scripts-pdf:
:wordstylesheet:
:standardstylesheet:
:header:
:wordcoverpage:
:wordintropage:

These files in VSD currently live in the lib/isodoc/html directory. The metanorma-acme document assumes they will be loaded in as asciidoctor document attributes.
When you obtain those attribute values from the Metanorma skinning repository, somehow, and you download those files to an accessible local directory, somehow, you will need to manipulate the input asciidoctor document, to inject those document attribute values into the Asciidoctor document to be processed.
This is already being done in metanorma gem, lib/compile.rb, process_input():
file = File.read(filename, encoding: "utf-8")
        options[:asciimath] and
          file.sub!(/^(=[^\n]+\n)/, "\\1:mn-keep-asciimath:\n")

That code is injecting the document attribute mn-keep-asciimath into the document, if the processor was invoked with the asciimath option.
In addition to these attributes, the skinning repository will contain font names:

:body-font:
:header-font:
:monospace-font:

And it will (eventually) contain organisation names, which currently are hardcoded in Acme. They will be populated into the Asciidoctor source in the same way, except they will not be file references.
metanorma-acme is intentionally a skeletal gem. Your job is to make it a shell for this kind of parameterised styling of Metanorma, and to implement skinning repositories, so that at minimum VSD and RSD gems are replaced with metanorma-acme (or whatever) plus the skinning repository attributes and files.
... @ronaldtse will be able to explain more. Please contact me if you have questions.

@opoudjis @ronaldtse can i close this issue?

@w00lf Is it possible to represent this gem just using configuration files? Thanks.

@w00lf Is it possible to represent this gem just using configuration files? Thanks.

@ronaldtse i will test if its possible now

This gem is exclusively config files and some initialisation code that I don't think can be avoided. (That's not going to be the case with RSD any more.)


Specifying an invalid version returns success

[Info] Downloading version: 1.20.8
[Info] Downloading from: https://golang.org/dl/go1.20.8.darwin-arm64.tar.gz
[Info] Downloading to: /Users/lbriggs/.gobrew/downloads
[Info] Downloading file go1.20.8.darwin-arm64.tar.gz from https://golang.org/dl/go1.20.8.darwin-arm64.tar.gz
0%
[Info] Download completed in 2.012692375s[Info] Extracting from: /Users/lbriggs/.gobrew/downloads/go1.20.8.darwin-arm64.tar.gz
[Info] Extracting to: /Users/lbriggs/.gobrew/versions/1.20.8
[Success] Untar to /Users/lbriggs/.gobrew/versions/1.20.8
[Success] Downloaded version: 1.20.8

Obviously there's no 1.20.8 of go, so the download should fail

lol

hmmm for me it is as below:
╰─$ go run cmd/gobrew/main.go use 1.20.8
==> [Info] Downloading version: 1.20.8
==> [Info] Downloading from: https://go.dev/dl/go1.20.8.darwin-arm64.tar.gz
==> [Info] Downloading to: /Users/pulkit.kathuria/.gobrew/downloads
404 <--- debug status code
==> [Info] Downloading version failed: https://go.dev/dl/go1.20.8.darwin-arm64.tar.gz returned status code 404
==> [Error]: Please check connectivity to url: https://go.dev/dl/go1.20.8.darwin-arm64.tar.gz

What version of gobrew version are you on?

I think you are on an older version
because  [Info] Downloading from: https://golang.org/dl/go1.20.8.darwin-arm64.tar.gz
The current defaultRegistryPath is go.dev which provides correct status code
https://github.com/kevincobain2000/gobrew/blob/c0cd7e92b6de254857dc2840773ae2360af300c1/gobrew.go#L24


The images at the end of the READEME.md can't be visited.

The images at the end of the READEME.md can't be visited.
https://github.com/react-native-community/lottie-react-native  "More part"

https://github.com/react-native-community/lottie-react-native/blob/master/docs/gifs/Example1.gif


Prometheus metrics are left behind when a tenant is detached

When a tenant is detached or a timeline is deleted, we don't remove the corresponding prometheus metric. Should call https://docs.rs/prometheus/latest/prometheus/core/struct.MetricVec.html#method.remove_label_values somewhere

@hlinnaka is it possible to call it in inside Drop trait ?

@hlinnaka is it possible to call it in inside Drop trait ?

Makes sense. After https://github.com/neondatabase/neon/pull/2278, you could do it in Drop implementation of TimelineMetrics.

https://github.com/neondatabase/neon/pull/2328 fixed this, closing.


Consider making Stream two different classes

Names below are temporary and awful and someone can think of better ones.
My proposal:

AsyncIterator: Pull-based, single-subscriber, buffering, either async or sync.
EventSource:  Push-based, multi-subscriber, non-buffering, either async or sync.

The fact there are 4 different types of stream controllers that can be created from new StreamController is very confusing to our users. I've seen 3-4 page docs floating internally just to explain the difference, and they are still misused - I think primarily because of naming.
Being more specific, i.e. AsyncIterator, makes it very clear what the purpose of the class is - in this case it's an Iterable data source with methods that execute asynchronously instead of synchronously. This is what I'd expect for say, stdin, reading a file on disk/on the network, etc.
And EventSource is exactly that - a way to register callbacks to get notified when an event occurs. OK to drop on the floor, basically.

My personal favorite would be to remove broadcast streams and sync controllers completely. Then we are down to one kind of stream.
If you ever need something that you can listen to more than once, just provide more than one stream (say, a Stream<MouseEvent> get onClick that returns a new stream each time.
Alternatively, allow some (still non-broadcast) streams to be listened to more than once, but each listener will be completely independent, as if they were listening on different streams. Basically make some streams replayable rather than multi-subscriber.
The iterator is harder to work with than a stream. You can already use the StreamQueue to wrap a stream, and I think it's much better than the old StreamIterator class (which tried to match the synchronous Iterator which is really a square-peg-round-hole exercise).

If you ever need something that you can listen to more than once, just provide more than one stream (say, a Stream get onClick that returns a new stream each time.

This would require to manage a list of still-listened-to streams in custom code, which seems quite inconvenient for such a widely used pattern. If another class like the mentioned EventSource is provided to cover that, it would be fine of course.

No current plans to change the Stream API