Full Code of alibaba-edu/mpc4j for AI

main ea3b9aa99389 cached
4736 files
113.5 MB
9.8M tokens
33608 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (39,312K chars total). Download the full file to get everything.
Repository: alibaba-edu/mpc4j
Branch: main
Commit: ea3b9aa99389
Files: 4736
Total size: 113.5 MB

Directory structure:
gitextract_zbjy07td/

├── .gitignore
├── CHANGELOG.md
├── INSTRUCTIONS.md
├── LICENSE
├── PAPERS.md
├── README.md
├── ae/
│   └── 2025_USEC_Practical_Keyword_PIR_from_Key-to-Index_Mappings.md
├── data/
│   ├── README.md
│   ├── black_ip/
│   │   ├── blackip.txt
│   │   └── oldip.txt
│   ├── classification/
│   │   ├── breast_cancer/
│   │   │   └── breastcancer.csv
│   │   ├── iris/
│   │   │   └── iris.csv
│   │   ├── pendigits/
│   │   │   └── pendigits.csv
│   │   └── weather/
│   │       └── weather.csv
│   └── regression/
│       ├── abalone/
│       │   ├── abalone-test.csv
│       │   └── abalone-train.csv
│       ├── autompg/
│       │   └── autoMpg.csv
│       ├── boston_housing/
│       │   └── boston_housing.csv
│       ├── cpu/
│       │   └── cpu.csv
│       └── kin8nm/
│           └── kin8nm.csv
├── mpc4j-common-circuit/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── circuit/
│       │                           ├── CircuitConfig.java
│       │                           ├── MpcVector.java
│       │                           ├── operator/
│       │                           │   ├── DyadicAcOperator.java
│       │                           │   ├── DyadicBcOperator.java
│       │                           │   ├── UnaryAcOperator.java
│       │                           │   ├── UnaryBcOperator.java
│       │                           │   └── Z2IntegerOperator.java
│       │                           ├── prefix/
│       │                           │   ├── AbstractPrefixTree.java
│       │                           │   ├── BrentKungTree.java
│       │                           │   ├── KoggeStoneTree.java
│       │                           │   ├── PrefixNode.java
│       │                           │   ├── PrefixOp.java
│       │                           │   ├── PrefixTree.java
│       │                           │   ├── PrefixTreeFactory.java
│       │                           │   └── SklanskyTree.java
│       │                           ├── z2/
│       │                           │   ├── AbstractZ2Circuit.java
│       │                           │   ├── MpcZ2Vector.java
│       │                           │   ├── MpcZ2cParty.java
│       │                           │   ├── PlainZ2Vector.java
│       │                           │   ├── PlainZ2cParty.java
│       │                           │   ├── Z2CircuitConfig.java
│       │                           │   ├── Z2IntegerCircuit.java
│       │                           │   ├── adder/
│       │                           │   │   ├── AbstractAdder.java
│       │                           │   │   ├── Adder.java
│       │                           │   │   ├── AdderFactory.java
│       │                           │   │   ├── ParallelPrefixAdder.java
│       │                           │   │   └── RippleCarryAdder.java
│       │                           │   ├── comparator/
│       │                           │   │   ├── Comparator.java
│       │                           │   │   ├── ComparatorFactory.java
│       │                           │   │   ├── SerialComparator.java
│       │                           │   │   └── TreeComparator.java
│       │                           │   ├── multiplier/
│       │                           │   │   ├── AbstractMultiplier.java
│       │                           │   │   ├── Multiplier.java
│       │                           │   │   ├── MultiplierFactory.java
│       │                           │   │   └── ShiftAddMultiplier.java
│       │                           │   ├── psorter/
│       │                           │   │   ├── AbstractPermutationSorter.java
│       │                           │   │   ├── Psorter.java
│       │                           │   │   ├── PsorterFactory.java
│       │                           │   │   └── bitonic/
│       │                           │   │       └── PermutableBitonicSorter.java
│       │                           │   ├── sorter/
│       │                           │   │   ├── AbstractSorter.java
│       │                           │   │   ├── AbstractSortingNetwork.java
│       │                           │   │   ├── BitonicSorter.java
│       │                           │   │   ├── RandomizedShellSorter.java
│       │                           │   │   ├── Sorter.java
│       │                           │   │   └── SorterFactory.java
│       │                           │   └── utils/
│       │                           │       └── Z2VectorUtils.java
│       │                           ├── zl/
│       │                           │   ├── MpcZlVector.java
│       │                           │   ├── MpcZlcParty.java
│       │                           │   ├── PlainZlVector.java
│       │                           │   └── PlainZlcParty.java
│       │                           ├── zl64/
│       │                           │   ├── MpcZl64Vector.java
│       │                           │   ├── MpcZl64cParty.java
│       │                           │   ├── PlainZl64Vector.java
│       │                           │   └── PlainZl64cParty.java
│       │                           └── zlong/
│       │                               ├── MpcLongParty.java
│       │                               ├── MpcLongVector.java
│       │                               └── PlainLongVector.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── circuit/
│           │                       ├── z2/
│           │                       │   ├── BatchPlainZ2PartyTest.java
│           │                       │   ├── SinglePlainZ2PartyTest.java
│           │                       │   ├── Z2AdderTest.java
│           │                       │   ├── Z2CircuitTestUtils.java
│           │                       │   ├── Z2ComparatorTest.java
│           │                       │   ├── Z2IntegerCircuitParty.java
│           │                       │   ├── Z2IntegerCircuitTest.java
│           │                       │   ├── Z2MultiplierTest.java
│           │                       │   ├── Z2PsorterTest.java
│           │                       │   └── Z2SorterTest.java
│           │                       └── zl/
│           │                           ├── BatchPlainZlPartyTest.java
│           │                           └── SinglePlainZlPartyTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-data/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── data/
│       │                           ├── DataFrameUtils.java
│       │                           ├── DatasetManager.java
│       │                           ├── classification/
│       │                           │   ├── BreastCancer.java
│       │                           │   ├── Iris.java
│       │                           │   ├── PenDigits.java
│       │                           │   └── Weather.java
│       │                           └── regression/
│       │                               ├── Abalone.java
│       │                               ├── AutoMpg.java
│       │                               ├── BostonHousing.java
│       │                               ├── Cpu.java
│       │                               └── Kin8nm.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── data/
│           │                       └── DatasetTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-rpc/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── rpc/
│       │                           ├── MpcAbortException.java
│       │                           ├── MpcAbortPreconditions.java
│       │                           ├── Party.java
│       │                           ├── PartyState.java
│       │                           ├── PtoState.java
│       │                           ├── Rpc.java
│       │                           ├── RpcManager.java
│       │                           ├── RpcPropertiesUtils.java
│       │                           ├── desc/
│       │                           │   ├── PtoDesc.java
│       │                           │   ├── PtoDescManager.java
│       │                           │   └── SecurityModel.java
│       │                           ├── impl/
│       │                           │   ├── file/
│       │                           │   │   ├── FileParty.java
│       │                           │   │   ├── FilePtoDesc.java
│       │                           │   │   ├── FileRpc.java
│       │                           │   │   └── FileRpcManager.java
│       │                           │   ├── memory/
│       │                           │   │   ├── MemoryParty.java
│       │                           │   │   ├── MemoryPtoDesc.java
│       │                           │   │   ├── MemoryRpc.java
│       │                           │   │   └── MemoryRpcManager.java
│       │                           │   └── netty/
│       │                           │       ├── NettyParty.java
│       │                           │       ├── protobuf/
│       │                           │       │   ├── RobustNettyRpc.proto
│       │                           │       │   ├── RobustNettyRpcProtobuf.java
│       │                           │       │   ├── SimpleNettyRpc.proto
│       │                           │       │   ├── SimpleNettyRpcProtobuf.java
│       │                           │       │   └── readme.md
│       │                           │       ├── robust/
│       │                           │       │   ├── RobustChunkAssembler.java
│       │                           │       │   ├── RobustDataReceiveHandler.java
│       │                           │       │   ├── RobustDataReceiveThread.java
│       │                           │       │   ├── RobustDataSendHandler.java
│       │                           │       │   ├── RobustDataSendManager.java
│       │                           │       │   ├── RobustNettyPtoDesc.java
│       │                           │       │   ├── RobustNettyRpc.java
│       │                           │       │   └── RobustNettyRpcManager.java
│       │                           │       └── simple/
│       │                           │           ├── SimpleDataReceiveHandler.java
│       │                           │           ├── SimpleDataReceiveThread.java
│       │                           │           ├── SimpleDataSendHandler.java
│       │                           │           ├── SimpleDataSendManager.java
│       │                           │           ├── SimpleNettyPtoDesc.java
│       │                           │           ├── SimpleNettyRpc.java
│       │                           │           └── SimpleNettyRpcManager.java
│       │                           ├── main/
│       │                           │   ├── AbstractMainTwoPartyPto.java
│       │                           │   ├── MainParty1Thread.java
│       │                           │   ├── MainParty2Thread.java
│       │                           │   ├── MainPtoConfigUtils.java
│       │                           │   └── MainTwoPartyPto.java
│       │                           ├── pto/
│       │                           │   ├── AbstractMultiPartyPto.java
│       │                           │   ├── AbstractMultiPartyPtoConfig.java
│       │                           │   ├── AbstractThreePartyMemoryRpcPto.java
│       │                           │   ├── AbstractThreePartyPto.java
│       │                           │   ├── AbstractTwoPartyAidPto.java
│       │                           │   ├── AbstractTwoPartyMemoryRpcPto.java
│       │                           │   ├── AbstractTwoPartyPto.java
│       │                           │   ├── MultiPartyPto.java
│       │                           │   ├── MultiPartyPtoConfig.java
│       │                           │   ├── PtoFactory.java
│       │                           │   ├── ThreePartyPto.java
│       │                           │   ├── TwoPartyAidPto.java
│       │                           │   └── TwoPartyPto.java
│       │                           └── utils/
│       │                               ├── DataPacket.java
│       │                               ├── DataPacketBuffer.java
│       │                               ├── DataPacketHeader.java
│       │                               └── PayloadType.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── rpc/
│           │                       ├── RpcTestUtils.java
│           │                       ├── impl/
│           │                       │   ├── RpcConnectTest.java
│           │                       │   ├── RpcImplTestPtoDesc.java
│           │                       │   ├── RpcImplTestUtils.java
│           │                       │   ├── RpcSendRecvTest.java
│           │                       │   ├── RpcSendRecvThread.java
│           │                       │   └── netty/
│           │                       │       ├── robust/
│           │                       │       │   ├── RobustChunkAssemblerTest.java
│           │                       │       │   └── RobustNettyRpcTest.java
│           │                       │       └── simple/
│           │                       │           └── SimpleNettyRpcTest.java
│           │                       └── utils/
│           │                           ├── DataPacketBufferParty1Thread.java
│           │                           ├── DataPacketBufferParty2Thread.java
│           │                           ├── DataPacketBufferTest.java
│           │                           ├── DataPacketTest.java
│           │                           └── DataPacketTestPtoDesc.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-sampler/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── sampler/
│       │                           ├── Sampler.java
│       │                           ├── SecureNoiseMath.java
│       │                           ├── binary/
│       │                           │   ├── BinarySampler.java
│       │                           │   ├── bernoulli/
│       │                           │   │   ├── ApacheBernoulliSampler.java
│       │                           │   │   ├── BernoulliSampler.java
│       │                           │   │   ├── ExpBernoulliSampler.java
│       │                           │   │   └── SecureBernoulliSampler.java
│       │                           │   └── others/
│       │                           │       └── ExpfBernoulliSampler.java
│       │                           ├── integral/
│       │                           │   ├── IntegralSampler.java
│       │                           │   ├── gaussian/
│       │                           │   │   ├── AbstractDiscGaussSampler.java
│       │                           │   │   ├── AbstractTauDiscGaussSampler.java
│       │                           │   │   ├── AliasTauDiscGaussSampler.java
│       │                           │   │   ├── Cks20DiscGaussSampler.java
│       │                           │   │   ├── Cks20TauDiscGaussSampler.java
│       │                           │   │   ├── ConvolutionDiscGaussSampler.java
│       │                           │   │   ├── DiscGaussSampler.java
│       │                           │   │   ├── DiscGaussSamplerFactory.java
│       │                           │   │   ├── Sigma2LogTableDiscGaussSampler.java
│       │                           │   │   ├── Sigma2LogTableTauDiscGaussSampler.java
│       │                           │   │   ├── TauDiscGaussSampler.java
│       │                           │   │   ├── UniLogTableTauDiscGaussSampler.java
│       │                           │   │   ├── UniOnlineTauDiscGaussSampler.java
│       │                           │   │   └── UniTableTauDiscGaussSampler.java
│       │                           │   ├── geometric/
│       │                           │   │   ├── ApacheGeometricSampler.java
│       │                           │   │   ├── DiscreteGeometricSampler.java
│       │                           │   │   ├── GeometricSampler.java
│       │                           │   │   └── JdkGeometricSampler.java
│       │                           │   ├── nb/
│       │                           │   │   ├── ApacheNbSampler.java
│       │                           │   │   └── NbSampler.java
│       │                           │   ├── others/
│       │                           │   │   └── Sigma2DiscGaussSampler.java
│       │                           │   └── poisson/
│       │                           │       ├── ApachePoissonSampler.java
│       │                           │       └── PoissonSampler.java
│       │                           └── real/
│       │                               ├── RealSampler.java
│       │                               ├── gamma/
│       │                               │   ├── ApacheGammaSampler.java
│       │                               │   └── GammaSampler.java
│       │                               ├── gaussian/
│       │                               │   ├── ApacheGaussianSampler.java
│       │                               │   ├── GaussianSampler.java
│       │                               │   └── GoogleGaussianSampler.java
│       │                               └── laplace/
│       │                                   ├── ApacheLaplaceSampler.java
│       │                                   ├── GoogleLaplaceSampler.java
│       │                                   └── LaplaceSampler.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── sampler/
│           │                       ├── binary/
│           │                       │   ├── BernoulliEfficiencyTest.java
│           │                       │   └── BernoulliTest.java
│           │                       ├── integral/
│           │                       │   ├── IntegerEfficiencyTest.java
│           │                       │   ├── gaussian/
│           │                       │   │   ├── ConvolutionDiscGaussSamplerTest.java
│           │                       │   │   ├── DiscGaussSamplerEfficiencyTest.java
│           │                       │   │   ├── DiscGaussSamplerTest.java
│           │                       │   │   ├── DiscGaussSamplerTestUtils.java
│           │                       │   │   └── TauDiscGaussSamplerTest.java
│           │                       │   ├── geometric/
│           │                       │   │   └── GeometricTest.java
│           │                       │   ├── nb/
│           │                       │   │   └── NbSamplerTest.java
│           │                       │   └── poisson/
│           │                       │       └── PoissonSamplerTest.java
│           │                       └── real/
│           │                           ├── RealEfficiencyTest.java
│           │                           ├── gamma/
│           │                           │   └── GammaRealTest.java
│           │                           ├── gaussian/
│           │                           │   └── GaussianRealTest.java
│           │                           └── laplace/
│           │                               └── LaplaceRealTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-structure/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── edu/
│       │   │       └── alibaba/
│       │   │           └── mpc4j/
│       │   │               └── common/
│       │   │                   └── structure/
│       │   │                       ├── StructureUtils.java
│       │   │                       ├── database/
│       │   │                       │   ├── Database.java
│       │   │                       │   ├── DatabaseFactory.java
│       │   │                       │   ├── NaiveDatabase.java
│       │   │                       │   ├── Zl32Database.java
│       │   │                       │   ├── Zl64Database.java
│       │   │                       │   └── ZlDatabase.java
│       │   │                       ├── fastfilter/
│       │   │                       │   ├── AbstractFastCuckooFilter.java
│       │   │                       │   ├── AbstractFastCuckooFilterPosition.java
│       │   │                       │   ├── AbstractFastVacuumFilter.java
│       │   │                       │   ├── AbstractFastVacuumFilterPosition.java
│       │   │                       │   ├── FastCuckooFilter.java
│       │   │                       │   ├── FastCuckooFilterFactory.java
│       │   │                       │   ├── FastCuckooFilterPosition.java
│       │   │                       │   ├── MobileFastCuckooFilter.java
│       │   │                       │   ├── MobileFastCuckooFilterPosition.java
│       │   │                       │   ├── MobileFastVacuumFilter.java
│       │   │                       │   ├── MobileFastVacuumFilterPosition.java
│       │   │                       │   ├── NaiveFastCuckooFilter.java
│       │   │                       │   ├── NaiveFastCuckooFilterPosition.java
│       │   │                       │   ├── NaiveFastVacuumFilter.java
│       │   │                       │   ├── NaiveFastVacuumFilterPosition.java
│       │   │                       │   └── SingleTable.java
│       │   │                       ├── filter/
│       │   │                       │   ├── AbstractBloomFilter.java
│       │   │                       │   ├── AbstractCuckooFilter.java
│       │   │                       │   ├── AbstractCuckooFilterPosition.java
│       │   │                       │   ├── AbstractVacuumFilter.java
│       │   │                       │   ├── AbstractVacuumFilterPosition.java
│       │   │                       │   ├── BloomFilter.java
│       │   │                       │   ├── BloomFilterFactory.java
│       │   │                       │   ├── CuckooFilter.java
│       │   │                       │   ├── CuckooFilterFactory.java
│       │   │                       │   ├── CuckooFilterPosition.java
│       │   │                       │   ├── DistinctBloomFilter.java
│       │   │                       │   ├── Filter.java
│       │   │                       │   ├── FilterFactory.java
│       │   │                       │   ├── MobileCuckooFilter.java
│       │   │                       │   ├── MobileCuckooFilterPosition.java
│       │   │                       │   ├── MobileVacuumFilter.java
│       │   │                       │   ├── MobileVacuumFilterPosition.java
│       │   │                       │   ├── NaiveCuckooFilter.java
│       │   │                       │   ├── NaiveCuckooFilterPosition.java
│       │   │                       │   ├── NaiveRandomBloomFilter.java
│       │   │                       │   ├── NaiveVacuumFilter.java
│       │   │                       │   ├── NaiveVacuumFilterPosition.java
│       │   │                       │   ├── SetFilter.java
│       │   │                       │   └── SparseRandomBloomFilter.java
│       │   │                       ├── fusefilter/
│       │   │                       │   ├── AbstractArity3ByteFuseInstance.java
│       │   │                       │   ├── AbstractArity3ByteFusePosition.java
│       │   │                       │   ├── Arity3ByteFuseFilter.java
│       │   │                       │   ├── Arity3ByteFuseInstance.java
│       │   │                       │   ├── Arity3ByteFusePosition.java
│       │   │                       │   ├── ByteFuseFilter.java
│       │   │                       │   ├── ByteFuseInstance.java
│       │   │                       │   ├── ByteFusePosition.java
│       │   │                       │   └── ByteFuseUtils.java
│       │   │                       ├── lpn/
│       │   │                       │   ├── LpnCoder.java
│       │   │                       │   ├── LpnParams.java
│       │   │                       │   ├── LpnParamsChecker.java
│       │   │                       │   ├── dual/
│       │   │                       │   │   ├── DualLpnCoder.java
│       │   │                       │   │   ├── excoder/
│       │   │                       │   │   │   ├── EaCoder.java
│       │   │                       │   │   │   ├── ExCoder.java
│       │   │                       │   │   │   ├── ExCoderFactory.java
│       │   │                       │   │   │   ├── NonSysEcCoder.java
│       │   │                       │   │   │   └── SystemEcCoder.java
│       │   │                       │   │   ├── expander/
│       │   │                       │   │   │   ├── AbstractExpanderCoder.java
│       │   │                       │   │   │   ├── NonSysExpanderCoder.java
│       │   │                       │   │   │   └── SystemExpanderCoder.java
│       │   │                       │   │   └── silver/
│       │   │                       │   │       ├── AbstractSilverCodeCreator.java
│       │   │                       │   │       ├── FullSilverCodeCreator.java
│       │   │                       │   │       ├── OnlineSilverCodeCreator.java
│       │   │                       │   │       ├── SilverCodeCreator.java
│       │   │                       │   │       ├── SilverCodeCreatorFactory.java
│       │   │                       │   │       ├── SilverCodeCreatorUtils.java
│       │   │                       │   │       ├── SilverCodeLpnParamsFinder.java
│       │   │                       │   │       └── SilverCoder.java
│       │   │                       │   └── primal/
│       │   │                       │       ├── LocalLinearCoder.java
│       │   │                       │       └── PrimalLpnCoder.java
│       │   │                       ├── matrix/
│       │   │                       │   ├── ByteMatrix.java
│       │   │                       │   ├── IntMatrix.java
│       │   │                       │   ├── LongRingMatrix.java
│       │   │                       │   ├── Matrix.java
│       │   │                       │   ├── Zl64Matrix.java
│       │   │                       │   └── zp/
│       │   │                       │       ├── DenseZpMatrix.java
│       │   │                       │       └── ZpMatrix.java
│       │   │                       ├── okve/
│       │   │                       │   ├── OkveHashUtils.java
│       │   │                       │   ├── cuckootable/
│       │   │                       │   │   ├── AbstractCuckooTable.java
│       │   │                       │   │   ├── CuckooTable.java
│       │   │                       │   │   ├── CuckooTableSingletonTcFinder.java
│       │   │                       │   │   ├── CuckooTableTcFinder.java
│       │   │                       │   │   ├── H2CuckooTable.java
│       │   │                       │   │   ├── H2CuckooTableDfsDealer.java
│       │   │                       │   │   ├── H2CuckooTableTcFinder.java
│       │   │                       │   │   ├── H3CuckooTable.java
│       │   │                       │   │   └── H4CuckooTable.java
│       │   │                       │   ├── dokvs/
│       │   │                       │   │   ├── DistinctGbfUtils.java
│       │   │                       │   │   ├── H2BlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H2ClusterBlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H2GctDokvsUtils.java
│       │   │                       │   │   ├── H2NaiveGctDokvsUtils.java
│       │   │                       │   │   ├── H3BlazeGctDovsUtils.java
│       │   │                       │   │   ├── H3ClusterBlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H3GctDokvsUtils.java
│       │   │                       │   │   ├── H3NaiveGctDokvsUtils.java
│       │   │                       │   │   ├── ecc/
│       │   │                       │   │   │   ├── AbstractEccDokvs.java
│       │   │                       │   │   │   ├── AbstractGbfEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH2ClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH2GctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH3ClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH3GctEccDokvs.java
│       │   │                       │   │   │   ├── DistinctGbfEccDokvs.java
│       │   │                       │   │   │   ├── EccDokvs.java
│       │   │                       │   │   │   ├── EccDokvsFactory.java
│       │   │                       │   │   │   ├── H2BlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H2NaiveClusterBlazeGctEccOkvs.java
│       │   │                       │   │   │   ├── H2SingletonGctEccDokvs.java
│       │   │                       │   │   │   ├── H2SparseClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H2TwoCoreGctEccDokvs.java
│       │   │                       │   │   │   ├── H3BlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H3NaiveClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H3SingletonGctEccDokvs.java
│       │   │                       │   │   │   ├── H3SparseClusterBlazeGctDokvs.java
│       │   │                       │   │   │   └── SparseEccDokvs.java
│       │   │                       │   │   ├── gf2e/
│       │   │                       │   │   │   ├── AbstractGbfGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH2ClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH2GctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH3ClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH3GctGf2eDokvs.java
│       │   │                       │   │   │   ├── BinaryGf2eDokvs.java
│       │   │                       │   │   │   ├── DistinctGbfGf2eDokvs.java
│       │   │                       │   │   │   ├── Gf2eDokvs.java
│       │   │                       │   │   │   ├── Gf2eDokvsFactory.java
│       │   │                       │   │   │   ├── H2BlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2NaiveClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2SingletonGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2SparseClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2TwoCoreGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3BlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3NaiveClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3SingletonGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3SparseClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── MegaBinGf2eDokvs.java
│       │   │                       │   │   │   └── SparseGf2eDokvs.java
│       │   │                       │   │   ├── gf2k/
│       │   │                       │   │   │   ├── AbstractGf2kDokvs.java
│       │   │                       │   │   │   ├── AbstractH3FieldGctGf2kDokvs.java
│       │   │                       │   │   │   ├── BinaryGf2kDokvs.java
│       │   │                       │   │   │   ├── FieldGf2kDokvs.java
│       │   │                       │   │   │   ├── Gf2kDokvs.java
│       │   │                       │   │   │   ├── Gf2kDokvsFactory.java
│       │   │                       │   │   │   ├── H3ClusterFieldBlazeGctGf2kDokvs.java
│       │   │                       │   │   │   ├── H3FieldBlazeGctGf2kDokvs.java
│       │   │                       │   │   │   └── MegaBinGf2kDokvs.java
│       │   │                       │   │   └── zp/
│       │   │                       │   │       ├── AbstractGbfZpDokvs.java
│       │   │                       │   │       ├── AbstractH2ClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── AbstractH2GctZpDokvs.java
│       │   │                       │   │       ├── AbstractH3ClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── AbstractH3GctZpDokvs.java
│       │   │                       │   │       ├── AbstractZpDokvs.java
│       │   │                       │   │       ├── DistinctGbfZpDokvs.java
│       │   │                       │   │       ├── H2BlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2NaiveClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2SingletonGctZpDokvs.java
│       │   │                       │   │       ├── H2SparseClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2TwoCoreGctZpDokvs.java
│       │   │                       │   │       ├── H3BlazeGctZpDokvs.java
│       │   │                       │   │       ├── H3NaiveClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H3SingletonGctZpDokvs.java
│       │   │                       │   │       ├── H3SparseClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── SparseZpDokvs.java
│       │   │                       │   │       ├── ZpDokvs.java
│       │   │                       │   │       └── ZpDokvsFactory.java
│       │   │                       │   └── tool/
│       │   │                       │       ├── BinaryBandLinearSolver.java
│       │   │                       │       ├── BinaryLinearSolver.java
│       │   │                       │       ├── BinaryMaxLisFinder.java
│       │   │                       │       ├── EccLinearSolver.java
│       │   │                       │       ├── Gf2kLinearSolver.java
│       │   │                       │       ├── RowEchelonFormInfo.java
│       │   │                       │       ├── Zp64BandLinearSolver.java
│       │   │                       │       ├── ZpBandLinearSolver.java
│       │   │                       │       ├── ZpLinearSolver.java
│       │   │                       │       └── ZpMaxLisFinder.java
│       │   │                       ├── pgm/
│       │   │                       │   ├── IntGrowableArray.java
│       │   │                       │   ├── LongApproxPgmIndex.java
│       │   │                       │   ├── LongIntrinsics.java
│       │   │                       │   ├── LongPgmIndex.java
│       │   │                       │   ├── PgmIndexUtil.java
│       │   │                       │   └── PlaModel.java
│       │   │                       ├── rcfilter/
│       │   │                       │   ├── AbstractRandomVacuumFilter.java
│       │   │                       │   ├── MobileRandomVacuumFilter.java
│       │   │                       │   ├── MobileRandomVacuumFilterPosition.java
│       │   │                       │   ├── NaiveRandomVacuumFilter.java
│       │   │                       │   ├── NaiveRandomVacuumFilterPosition.java
│       │   │                       │   ├── RandomCuckooFilter.java
│       │   │                       │   ├── RandomCuckooFilterFactory.java
│       │   │                       │   ├── RandomCuckooFilterHashUtils.java
│       │   │                       │   └── RandomCuckooFilterPosition.java
│       │   │                       └── vector/
│       │   │                           ├── BigIntegerVector.java
│       │   │                           ├── ByteVector.java
│       │   │                           ├── FieldVector.java
│       │   │                           ├── IntVector.java
│       │   │                           ├── LongVector.java
│       │   │                           ├── RingVector.java
│       │   │                           ├── Vector.java
│       │   │                           ├── Zl64Vector.java
│       │   │                           ├── ZlVector.java
│       │   │                           └── Zp64Vector.java
│       │   └── resources/
│       │       └── silver/
│       │           └── z2/
│       │               ├── SILVER_11_14.txt
│       │               ├── SILVER_11_15.txt
│       │               ├── SILVER_11_16.txt
│       │               ├── SILVER_11_17.txt
│       │               ├── SILVER_11_18.txt
│       │               ├── SILVER_11_19.txt
│       │               ├── SILVER_11_20.txt
│       │               ├── SILVER_11_21.txt
│       │               ├── SILVER_11_22.txt
│       │               ├── SILVER_11_23.txt
│       │               ├── SILVER_11_24.txt
│       │               ├── SILVER_5_14.txt
│       │               ├── SILVER_5_15.txt
│       │               ├── SILVER_5_16.txt
│       │               ├── SILVER_5_17.txt
│       │               ├── SILVER_5_18.txt
│       │               ├── SILVER_5_19.txt
│       │               ├── SILVER_5_20.txt
│       │               ├── SILVER_5_21.txt
│       │               ├── SILVER_5_22.txt
│       │               ├── SILVER_5_23.txt
│       │               └── SILVER_5_24.txt
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── structure/
│           │                       ├── database/
│           │                       │   ├── DatabaseTest.java
│           │                       │   └── NaiveDatabaseTest.java
│           │                       ├── fastfilter/
│           │                       │   ├── FastCuckooFilterTest.java
│           │                       │   └── FastFilterEfficiencyTest.java
│           │                       ├── filter/
│           │                       │   ├── BloomFilterTest.java
│           │                       │   ├── CuckooFilterTest.java
│           │                       │   ├── FilterEfficiencyTest.java
│           │                       │   └── FilterTest.java
│           │                       ├── fusefilter/
│           │                       │   ├── ByteFuseFilterParamsTest.java
│           │                       │   └── ByteFuseFilterTest.java
│           │                       ├── lpn/
│           │                       │   ├── LpnCoderTestUtils.java
│           │                       │   ├── LpnParamsCheckerTest.java
│           │                       │   ├── dual/
│           │                       │   │   ├── excoder/
│           │                       │   │   │   └── ExCoderTest.java
│           │                       │   │   ├── expander/
│           │                       │   │   │   ├── NonSysExpanderCoderTest.java
│           │                       │   │   │   └── SystemExpanderCoderTest.java
│           │                       │   │   └── silver/
│           │                       │   │       ├── SilverCodeCreatorTest.java
│           │                       │   │       └── SilverCoderTest.java
│           │                       │   └── primal/
│           │                       │       └── LocalLinearCoderTest.java
│           │                       ├── matrix/
│           │                       │   ├── IntMatrixTest.java
│           │                       │   └── zp/
│           │                       │       └── DenseZpMatrixTest.java
│           │                       ├── okve/
│           │                       │   ├── cuckootable/
│           │                       │   │   ├── CuckooTableTest.java
│           │                       │   │   ├── H2DfsDealerTest.java
│           │                       │   │   ├── H2TcFinderTest.java
│           │                       │   │   ├── H3TcFinderTest.java
│           │                       │   │   └── H4TcFinderTest.java
│           │                       │   ├── dokvs/
│           │                       │   │   ├── ecc/
│           │                       │   │   │   ├── EccDokvsEfficiencyTest.java
│           │                       │   │   │   ├── EccDokvsTest.java
│           │                       │   │   │   └── SparseEccDokvsTest.java
│           │                       │   │   ├── gf2e/
│           │                       │   │   │   ├── BinaryGf2eDokvsTest.java
│           │                       │   │   │   ├── Gf2eDokvsEfficiencyTest.java
│           │                       │   │   │   ├── Gf2eDokvsTest.java
│           │                       │   │   │   └── SparseGf2eDokvsTest.java
│           │                       │   │   ├── gf2k/
│           │                       │   │   │   ├── Gf2kDokvsEfficiencyTest.java
│           │                       │   │   │   └── Gf2kDokvsTest.java
│           │                       │   │   └── zp/
│           │                       │   │       ├── SparseZpDokvsTest.java
│           │                       │   │       ├── ZpDokvsEfficiencyTest.java
│           │                       │   │       └── ZpDokvsTest.java
│           │                       │   └── tool/
│           │                       │       ├── BinaryBandLinearSolverConstantTest.java
│           │                       │       ├── BinaryBandLinearSolverRandomTest.java
│           │                       │       ├── BinaryLinearSolverConstantTest.java
│           │                       │       ├── BinaryLinearSolverRandomTest.java
│           │                       │       ├── BinaryMaxLisFinderTest.java
│           │                       │       ├── EccLinearSolverRandomTest.java
│           │                       │       ├── Gf2kLinearSolverConstantTest.java
│           │                       │       ├── Zp64BandLinearSolverConstantTest.java
│           │                       │       ├── Zp64BandLinearSolverRandomTest.java
│           │                       │       ├── ZpBandLinearSolverConstantTest.java
│           │                       │       ├── ZpBandLinearSolverRandomTest.java
│           │                       │       ├── ZpLinearSolverConstantTest.java
│           │                       │       ├── ZpLinearSolverRandomTest.java
│           │                       │       └── ZpMaxLisFinderTest.java
│           │                       ├── pgm/
│           │                       │   ├── LongApproxPgmIndexParamsTest.java
│           │                       │   ├── LongApproxPgmIndexTest.java
│           │                       │   ├── LongIntrinsicsTest.java
│           │                       │   └── LongPgmIndexTest.java
│           │                       ├── rcfilter/
│           │                       │   ├── RandomCuckooFilterTest.java
│           │                       │   └── RandomFilterEfficiencyTest.java
│           │                       └── vector/
│           │                           ├── ByteVectorTest.java
│           │                           ├── IntVectorTest.java
│           │                           ├── LongVectorTest.java
│           │                           ├── Zl64VectorTest.java
│           │                           ├── ZlVectorTest.java
│           │                           └── Zp64VectorTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-tool/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   ├── cc/
│       │   │   │   └── redberry/
│       │   │   │       └── rings/
│       │   │   │           └── JdkIntegersZp.java
│       │   │   └── edu/
│       │   │       └── alibaba/
│       │   │           └── mpc4j/
│       │   │               └── common/
│       │   │                   └── tool/
│       │   │                       ├── CommonConstants.java
│       │   │                       ├── Config.java
│       │   │                       ├── EnvType.java
│       │   │                       ├── MathPreconditions.java
│       │   │                       ├── bitmatrix/
│       │   │                       │   ├── dense/
│       │   │                       │   │   ├── ByteDenseBitMatrix.java
│       │   │                       │   │   ├── DenseBitMatrix.java
│       │   │                       │   │   ├── DenseBitMatrixFactory.java
│       │   │                       │   │   └── LongDenseBitMatrix.java
│       │   │                       │   ├── sparse/
│       │   │                       │   │   ├── ExtremeSparseBitMatrix.java
│       │   │                       │   │   ├── LowerTriSquareSparseBitMatrix.java
│       │   │                       │   │   ├── NaiveSparseBitMatrix.java
│       │   │                       │   │   ├── SparseBitMatrix.java
│       │   │                       │   │   ├── SparseBitVector.java
│       │   │                       │   │   ├── TriSquareSparseBitMatrix.java
│       │   │                       │   │   └── UpperTriSquareSparseBitMatrix.java
│       │   │                       │   └── trans/
│       │   │                       │       ├── AbstractSplitColTransBitMatrix.java
│       │   │                       │       ├── AbstractSplitRowTransBitMatrix.java
│       │   │                       │       ├── AbstractTransBitMatrix.java
│       │   │                       │       ├── EklundhTransBitMatrix.java
│       │   │                       │       ├── JdkSimdTransBitMatrix.java
│       │   │                       │       ├── JdkSplitColTransBitMatrix.java
│       │   │                       │       ├── JdkSplitRowTransBitMatrix.java
│       │   │                       │       ├── JdkTransBitMatrix.java
│       │   │                       │       ├── NativeSplitColTransBitMatrix.java
│       │   │                       │       ├── NativeSplitRowTransBitMatrix.java
│       │   │                       │       ├── NativeTransBitMatrix.java
│       │   │                       │       ├── TransBitMatrix.java
│       │   │                       │       └── TransBitMatrixFactory.java
│       │   │                       ├── bitvector/
│       │   │                       │   ├── BigIntegerBitVector.java
│       │   │                       │   ├── BitVector.java
│       │   │                       │   ├── BitVectorFactory.java
│       │   │                       │   ├── BytesBitVector.java
│       │   │                       │   └── CombinedBitVector.java
│       │   │                       ├── bristol/
│       │   │                       │   ├── AbstractBristolBmmGenerator.java
│       │   │                       │   ├── AbstractBristolFashionGenerator.java
│       │   │                       │   ├── AbstractBristolFashionLowMcGenerator.java
│       │   │                       │   ├── BlockBmmLookupCode.java
│       │   │                       │   ├── BristolFashionBmmGenerator.java
│       │   │                       │   ├── BristolFashionEvaluator.java
│       │   │                       │   ├── BristolFashionLowMcFileGenerator.java
│       │   │                       │   ├── BristolFashionType.java
│       │   │                       │   ├── GateOperation.java
│       │   │                       │   └── GrayCodeGenerator.java
│       │   │                       ├── coder/
│       │   │                       │   ├── Coder.java
│       │   │                       │   ├── linear/
│       │   │                       │   │   ├── AbstractBchCoder.java
│       │   │                       │   │   ├── Bch065By448Coder.java
│       │   │                       │   │   ├── Bch072By462Coder.java
│       │   │                       │   │   ├── Bch076By511Coder.java
│       │   │                       │   │   ├── Bch084By495Coder.java
│       │   │                       │   │   ├── Bch090By495Coder.java
│       │   │                       │   │   ├── Bch132By583Coder.java
│       │   │                       │   │   ├── Bch138By594Coder.java
│       │   │                       │   │   ├── Bch144By605Coder.java
│       │   │                       │   │   ├── Bch150By616Coder.java
│       │   │                       │   │   ├── Bch156By627Coder.java
│       │   │                       │   │   ├── Bch162By638Coder.java
│       │   │                       │   │   ├── Bch168By649Coder.java
│       │   │                       │   │   ├── Bch174By660Coder.java
│       │   │                       │   │   ├── Bch210By732Coder.java
│       │   │                       │   │   ├── Bch217By744Coder.java
│       │   │                       │   │   ├── Bch231By768Coder.java
│       │   │                       │   │   ├── Bch238By776Coder.java
│       │   │                       │   │   ├── HadamardCoder.java
│       │   │                       │   │   ├── LinearCoder.java
│       │   │                       │   │   ├── LinearCoderFactory.java
│       │   │                       │   │   └── ReputationCoder.java
│       │   │                       │   └── random/
│       │   │                       │       ├── RandomCoder.java
│       │   │                       │       └── RandomCoderUtils.java
│       │   │                       ├── crypto/
│       │   │                       │   ├── commit/
│       │   │                       │   │   ├── AbstractRoBcCommit.java
│       │   │                       │   │   ├── AbstractRoJdkCommit.java
│       │   │                       │   │   ├── Commit.java
│       │   │                       │   │   ├── CommitFactory.java
│       │   │                       │   │   ├── RoBcSha256Commit.java
│       │   │                       │   │   ├── RoBcSm3Commit.java
│       │   │                       │   │   └── RoJdkSha256Commit.java
│       │   │                       │   ├── crhf/
│       │   │                       │   │   ├── Crhf.java
│       │   │                       │   │   ├── CrhfFactory.java
│       │   │                       │   │   ├── FixedKeyMmoCrhf.java
│       │   │                       │   │   ├── JdkMmoSigmaCrhf.java
│       │   │                       │   │   ├── MmoCrhf.java
│       │   │                       │   │   └── SimdMmoSigmaCrhf.java
│       │   │                       │   ├── ecc/
│       │   │                       │   │   ├── AbstractEcc.java
│       │   │                       │   │   ├── AbstractNativeEcc.java
│       │   │                       │   │   ├── ByteEccFactory.java
│       │   │                       │   │   ├── ByteFullEcc.java
│       │   │                       │   │   ├── ByteMulEcc.java
│       │   │                       │   │   ├── ByteMulElligatorEcc.java
│       │   │                       │   │   ├── Ecc.java
│       │   │                       │   │   ├── EccFactory.java
│       │   │                       │   │   ├── NativeEcc.java
│       │   │                       │   │   ├── WindowMethod.java
│       │   │                       │   │   ├── bc/
│       │   │                       │   │   │   ├── Curve25519BcEcc.java
│       │   │                       │   │   │   ├── Ed25519BcByteFullEcc.java
│       │   │                       │   │   │   ├── Ed25519BcEcc.java
│       │   │                       │   │   │   ├── SecP256k1BcEcc.java
│       │   │                       │   │   │   ├── SecP256r1BcEcc.java
│       │   │                       │   │   │   ├── Sm2P256v1BcEcc.java
│       │   │                       │   │   │   ├── X25519BcByteMulEcc.java
│       │   │                       │   │   │   └── X25519BcByteMulElligatorEcc.java
│       │   │                       │   │   ├── cafe/
│       │   │                       │   │   │   ├── CafeAffineNielsPoint.java
│       │   │                       │   │   │   ├── CafeCompletedPoint.java
│       │   │                       │   │   │   ├── CafeConstantTimeUtils.java
│       │   │                       │   │   │   ├── CafeConstants.java
│       │   │                       │   │   │   ├── CafeEdwardsCompressedPoint.java
│       │   │                       │   │   │   ├── CafeEdwardsPoint.java
│       │   │                       │   │   │   ├── CafeEdwardsPrecomputeTable.java
│       │   │                       │   │   │   ├── CafeFieldElement.java
│       │   │                       │   │   │   ├── CafeProjectiveNielsPoint.java
│       │   │                       │   │   │   ├── CafeProjectivePoint.java
│       │   │                       │   │   │   ├── CafeRistrettoCompressedPoint.java
│       │   │                       │   │   │   ├── CafeRistrettoGeneratorTable.java
│       │   │                       │   │   │   ├── CafeRistrettoPoint.java
│       │   │                       │   │   │   ├── CafeScalar.java
│       │   │                       │   │   │   ├── CafeUnpackedScalar.java
│       │   │                       │   │   │   ├── Ed25519CafeByteFullEcc.java
│       │   │                       │   │   │   └── RistrettoCafeByteFullEcc.java
│       │   │                       │   │   ├── fourq/
│       │   │                       │   │   │   └── FourqByteFullEcc.java
│       │   │                       │   │   ├── openssl/
│       │   │                       │   │   │   ├── AbstractOpensslEcc.java
│       │   │                       │   │   │   ├── SecP256k1OpensslEcc.java
│       │   │                       │   │   │   ├── SecP256k1OpensslNativeEcc.java
│       │   │                       │   │   │   ├── SecP256r1OpensslEcc.java
│       │   │                       │   │   │   ├── SecP256r1OpensslNativeEcc.java
│       │   │                       │   │   │   ├── Sm2P256v1OpensslEcc.java
│       │   │                       │   │   │   └── Sm2P256v1OpensslNativeEcc.java
│       │   │                       │   │   ├── sodium/
│       │   │                       │   │   │   ├── Ed25519SodiumByteFullEcc.java
│       │   │                       │   │   │   └── X25519SodiumByteMulEcc.java
│       │   │                       │   │   └── utils/
│       │   │                       │   │       ├── ByteEccUtils.java
│       │   │                       │   │       ├── Curve25519FieldUtils.java
│       │   │                       │   │       ├── Ed25519ByteEccUtils.java
│       │   │                       │   │       ├── FourqByteEccUtils.java
│       │   │                       │   │       └── X25519ByteEccUtils.java
│       │   │                       │   ├── engine/
│       │   │                       │   │   ├── JdkSm4Engine.java
│       │   │                       │   │   └── Rijndael256Engine.java
│       │   │                       │   ├── hash/
│       │   │                       │   │   ├── AbstractJdkHash.java
│       │   │                       │   │   ├── BcBlake2b160Hash.java
│       │   │                       │   │   ├── BcSha3Series256Hash.java
│       │   │                       │   │   ├── BcSha3Series512Hash.java
│       │   │                       │   │   ├── BcShake128Hash.java
│       │   │                       │   │   ├── BcShake256Hash.java
│       │   │                       │   │   ├── BcSm3Hash.java
│       │   │                       │   │   ├── Hash.java
│       │   │                       │   │   ├── HashFactory.java
│       │   │                       │   │   ├── JdkSha256Hash.java
│       │   │                       │   │   ├── NativeBlake2b160Hash.java
│       │   │                       │   │   ├── NativeBlake3Hash.java
│       │   │                       │   │   └── NativeSha256Hash.java
│       │   │                       │   ├── kdf/
│       │   │                       │   │   ├── BcBlake2bKdf.java
│       │   │                       │   │   ├── BcSm3Kdf.java
│       │   │                       │   │   ├── JdkSha256Kdf.java
│       │   │                       │   │   ├── Kdf.java
│       │   │                       │   │   ├── KdfFactory.java
│       │   │                       │   │   ├── NativeBlake2bKdf.java
│       │   │                       │   │   ├── NativeBlake3Kdf.java
│       │   │                       │   │   └── NativeSha256Kdf.java
│       │   │                       │   ├── kyber/
│       │   │                       │   │   ├── KyberEngine.java
│       │   │                       │   │   ├── KyberEngineFactory.java
│       │   │                       │   │   ├── engine/
│       │   │                       │   │   │   ├── KyberCcaEngine.java
│       │   │                       │   │   │   ├── KyberCpaEngine.java
│       │   │                       │   │   │   └── KyberEngineHelper.java
│       │   │                       │   │   ├── params/
│       │   │                       │   │   │   ├── KyberKeyPair.java
│       │   │                       │   │   │   ├── KyberParams.java
│       │   │                       │   │   │   ├── KyberUniformRandom.java
│       │   │                       │   │   │   └── UnpackedCiphertext.java
│       │   │                       │   │   └── utils/
│       │   │                       │   │       ├── ByteOps.java
│       │   │                       │   │       ├── Ntt.java
│       │   │                       │   │       └── Poly.java
│       │   │                       │   ├── prf/
│       │   │                       │   │   ├── BcSip128HashPrf.java
│       │   │                       │   │   ├── BcSipHashPrf.java
│       │   │                       │   │   ├── BcSm4CbcPrf.java
│       │   │                       │   │   ├── JdkAesCbcPrf.java
│       │   │                       │   │   ├── Prf.java
│       │   │                       │   │   └── PrfFactory.java
│       │   │                       │   ├── prg/
│       │   │                       │   │   ├── BcSm4CtrPrg.java
│       │   │                       │   │   ├── BcSm4EcbPrg.java
│       │   │                       │   │   ├── JdkAesCtrPrg.java
│       │   │                       │   │   ├── JdkAesEcbPrg.java
│       │   │                       │   │   ├── JdkSecureRandomPrg.java
│       │   │                       │   │   ├── Prg.java
│       │   │                       │   │   └── PrgFactory.java
│       │   │                       │   ├── prp/
│       │   │                       │   │   ├── BcSm4Prp.java
│       │   │                       │   │   ├── DefaultFixedKeyPrp.java
│       │   │                       │   │   ├── FixedKeyPrp.java
│       │   │                       │   │   ├── JdkAesPrp.java
│       │   │                       │   │   ├── JdkBytesLowMcPrp.java
│       │   │                       │   │   ├── JdkLongsLowMcPrp.java
│       │   │                       │   │   ├── NativeAesPrp.java
│       │   │                       │   │   ├── Prp.java
│       │   │                       │   │   └── PrpFactory.java
│       │   │                       │   ├── stream/
│       │   │                       │   │   ├── BcAesOfbStreamCipher.java
│       │   │                       │   │   ├── BcSm4OfbStreamCipher.java
│       │   │                       │   │   ├── BcZuc128StreamCipher.java
│       │   │                       │   │   ├── JdkAesOfbStreamCipher.java
│       │   │                       │   │   ├── StreamCipher.java
│       │   │                       │   │   └── StreamCipherFactory.java
│       │   │                       │   └── tcrhf/
│       │   │                       │       ├── Tcrhf.java
│       │   │                       │       ├── TcrhfFactory.java
│       │   │                       │       └── TmmoTcrhf.java
│       │   │                       ├── f3hash/
│       │   │                       │   ├── F3Hash.java
│       │   │                       │   ├── F3HashFactory.java
│       │   │                       │   └── LongF3Hash.java
│       │   │                       ├── galoisfield/
│       │   │                       │   ├── BigIntegerField.java
│       │   │                       │   ├── BigIntegerRing.java
│       │   │                       │   ├── ByteField.java
│       │   │                       │   ├── ByteRing.java
│       │   │                       │   ├── BytesField.java
│       │   │                       │   ├── BytesRing.java
│       │   │                       │   ├── LongField.java
│       │   │                       │   ├── LongRing.java
│       │   │                       │   ├── Z3ByteField.java
│       │   │                       │   ├── Z3Utils.java
│       │   │                       │   ├── gf2e/
│       │   │                       │   │   ├── AbstractGf064.java
│       │   │                       │   │   ├── AbstractGf128.java
│       │   │                       │   │   ├── AbstractGf2e.java
│       │   │                       │   │   ├── CombinedGf064.java
│       │   │                       │   │   ├── CombinedGf128.java
│       │   │                       │   │   ├── Gf2e.java
│       │   │                       │   │   ├── Gf2eFactory.java
│       │   │                       │   │   ├── Gf2eGadget.java
│       │   │                       │   │   ├── Gf2eManager.java
│       │   │                       │   │   ├── JdkGf001.java
│       │   │                       │   │   ├── JdkGf002.java
│       │   │                       │   │   ├── JdkGf004.java
│       │   │                       │   │   ├── JdkGf008.java
│       │   │                       │   │   ├── JdkGf016.java
│       │   │                       │   │   ├── JdkGf032.java
│       │   │                       │   │   ├── JdkGf064.java
│       │   │                       │   │   ├── JdkGf128.java
│       │   │                       │   │   ├── JdkGf2eUtils.java
│       │   │                       │   │   ├── NtlGf2e.java
│       │   │                       │   │   ├── NtlNativeGf2e.java
│       │   │                       │   │   └── RingsGf2e.java
│       │   │                       │   ├── gf2k/
│       │   │                       │   │   ├── AbstractGf2k.java
│       │   │                       │   │   ├── CombinedGf2k.java
│       │   │                       │   │   ├── Gf2k.java
│       │   │                       │   │   ├── Gf2kFactory.java
│       │   │                       │   │   ├── Gf2kGadget.java
│       │   │                       │   │   ├── JdkGf2k.java
│       │   │                       │   │   ├── NtlGf2k.java
│       │   │                       │   │   └── RingsGf2k.java
│       │   │                       │   ├── sgf2k/
│       │   │                       │   │   ├── AbstractSubSgf2k.java
│       │   │                       │   │   ├── Dgf2k.java
│       │   │                       │   │   ├── Dgf2kFactory.java
│       │   │                       │   │   ├── NtlSubSgf2k.java
│       │   │                       │   │   ├── RingsSubSgf2k.java
│       │   │                       │   │   ├── Sgf2k.java
│       │   │                       │   │   ├── Sgf2k001.java
│       │   │                       │   │   ├── Sgf2k128.java
│       │   │                       │   │   ├── Sgf2kFactory.java
│       │   │                       │   │   └── Sgf2kManager.java
│       │   │                       │   ├── zl/
│       │   │                       │   │   ├── AbstractZl.java
│       │   │                       │   │   ├── JdkZl.java
│       │   │                       │   │   ├── Zl.java
│       │   │                       │   │   └── ZlFactory.java
│       │   │                       │   ├── zl64/
│       │   │                       │   │   ├── AbstractZl64.java
│       │   │                       │   │   ├── JdkZl64.java
│       │   │                       │   │   ├── Zl64.java
│       │   │                       │   │   └── Zl64Factory.java
│       │   │                       │   ├── zn/
│       │   │                       │   │   ├── AbstractZn.java
│       │   │                       │   │   ├── JdkZn.java
│       │   │                       │   │   ├── Zn.java
│       │   │                       │   │   └── ZnFactory.java
│       │   │                       │   ├── zn64/
│       │   │                       │   │   ├── AbstractZn64.java
│       │   │                       │   │   ├── RingsZn64.java
│       │   │                       │   │   ├── Zn64.java
│       │   │                       │   │   └── Zn64Factory.java
│       │   │                       │   ├── zp/
│       │   │                       │   │   ├── AbstractZp.java
│       │   │                       │   │   ├── JdkZp.java
│       │   │                       │   │   ├── Zp.java
│       │   │                       │   │   ├── ZpFactory.java
│       │   │                       │   │   ├── ZpGadget.java
│       │   │                       │   │   └── ZpManager.java
│       │   │                       │   └── zp64/
│       │   │                       │       ├── AbstractZp64.java
│       │   │                       │       ├── RingsZp64.java
│       │   │                       │       ├── Zp64.java
│       │   │                       │       ├── Zp64Factory.java
│       │   │                       │       ├── Zp64Gadget.java
│       │   │                       │       └── Zp64Manager.java
│       │   │                       ├── hash/
│       │   │                       │   ├── IntHash.java
│       │   │                       │   ├── IntHashFactory.java
│       │   │                       │   ├── LongHash.java
│       │   │                       │   ├── LongHashFactory.java
│       │   │                       │   ├── bobhash/
│       │   │                       │   │   ├── BobHashUtils.java
│       │   │                       │   │   ├── BobIntHash.java
│       │   │                       │   │   └── BobLongHash.java
│       │   │                       │   └── xxhash/
│       │   │                       │       ├── XxIntHash.java
│       │   │                       │       └── XxLongHash.java
│       │   │                       ├── hashbin/
│       │   │                       │   ├── MaxBinSizeUtils.java
│       │   │                       │   ├── object/
│       │   │                       │   │   ├── EmptyPadHashBin.java
│       │   │                       │   │   ├── HashBin.java
│       │   │                       │   │   ├── HashBinEntry.java
│       │   │                       │   │   ├── PhaseHashBin.java
│       │   │                       │   │   ├── RandomPadHashBin.java
│       │   │                       │   │   ├── TwoChoiceHashBin.java
│       │   │                       │   │   └── cuckoo/
│       │   │                       │   │       ├── AbstractNoStashCuckooHashBin.java
│       │   │                       │   │       ├── CuckooHashBin.java
│       │   │                       │   │       ├── CuckooHashBinFactory.java
│       │   │                       │   │       ├── NaiveCuckooHashBin.java
│       │   │                       │   │       ├── NaiveNoStashCuckooHashBin.java
│       │   │                       │   │       ├── NoStashCuckooHashBin.java
│       │   │                       │   │       ├── NoStashCuckooHashBinUtils.java
│       │   │                       │   │       ├── OneHashCuckooHashBin.java
│       │   │                       │   │       └── Psz18NoStashCuckooHashBin.java
│       │   │                       │   └── primitive/
│       │   │                       │       ├── ArraySimpleIntHashBin.java
│       │   │                       │       ├── DynamicSimpleIntHashBin.java
│       │   │                       │       ├── IntHashBin.java
│       │   │                       │       └── cuckoo/
│       │   │                       │           ├── AbstractIntNoStashCuckooHashBin.java
│       │   │                       │           ├── IntCuckooHashBinFactory.java
│       │   │                       │           ├── IntNoStashCuckooHashBin.java
│       │   │                       │           ├── NaiveIntNoStashCuckooHashBin.java
│       │   │                       │           └── Psz18IntNoStashCuckooHashBin.java
│       │   │                       ├── metrics/
│       │   │                       │   ├── HeavyHitterMetrics.java
│       │   │                       │   └── KendallCorrelation.java
│       │   │                       ├── network/
│       │   │                       │   ├── PermutationNetwork.java
│       │   │                       │   ├── PermutationNetworkFactory.java
│       │   │                       │   ├── PermutationNetworkUtils.java
│       │   │                       │   ├── benes/
│       │   │                       │   │   ├── AbstractBenesNetwork.java
│       │   │                       │   │   ├── BenesNetwork.java
│       │   │                       │   │   ├── BenesNetworkFactory.java
│       │   │                       │   │   ├── JdkBenesNetwork.java
│       │   │                       │   │   └── NativeBenesNetwork.java
│       │   │                       │   ├── decomposer/
│       │   │                       │   │   ├── AbstractPermutationDecomposer.java
│       │   │                       │   │   ├── Cgp20PermutationDecomposer.java
│       │   │                       │   │   ├── Lll24PermutationDecomposer.java
│       │   │                       │   │   ├── PermutationDecomposer.java
│       │   │                       │   │   └── PermutationDecomposerFactory.java
│       │   │                       │   └── waksman/
│       │   │                       │       ├── AbstractWaksmanNetwork.java
│       │   │                       │       ├── JdkWaksmanNetwork.java
│       │   │                       │       ├── NativeWaksmanNetwork.java
│       │   │                       │       ├── WaksmanNetwork.java
│       │   │                       │       └── WaksmanNetworkFactory.java
│       │   │                       ├── polynomial/
│       │   │                       │   ├── gf2e/
│       │   │                       │   │   ├── AbstractGf2ePoly.java
│       │   │                       │   │   ├── AbstractRingsGf2ePoly.java
│       │   │                       │   │   ├── Gf2ePoly.java
│       │   │                       │   │   ├── Gf2ePolyFactory.java
│       │   │                       │   │   ├── NtlGf2ePoly.java
│       │   │                       │   │   ├── NtlNativeGf2ePoly.java
│       │   │                       │   │   ├── RingsLagrangeGf2ePoly.java
│       │   │                       │   │   └── RingsNewtonGf2ePoly.java
│       │   │                       │   ├── power/
│       │   │                       │   │   ├── PowersDag.java
│       │   │                       │   │   └── PowersNode.java
│       │   │                       │   ├── zp/
│       │   │                       │   │   ├── AbstractRingsZpPoly.java
│       │   │                       │   │   ├── AbstractZpPoly.java
│       │   │                       │   │   ├── AbstractZpTreePoly.java
│       │   │                       │   │   ├── JdkLagrangeZpPoly.java
│       │   │                       │   │   ├── JdkNewtonZpPoly.java
│       │   │                       │   │   ├── NtlTreeZpPoly.java
│       │   │                       │   │   ├── NtlZpPoly.java
│       │   │                       │   │   ├── RingsLagrangeZpPoly.java
│       │   │                       │   │   ├── RingsNewtonZpPoly.java
│       │   │                       │   │   ├── RingsZpTreePoly.java
│       │   │                       │   │   ├── ZpPoly.java
│       │   │                       │   │   ├── ZpPolyFactory.java
│       │   │                       │   │   └── ZpTreePoly.java
│       │   │                       │   └── zp64/
│       │   │                       │       ├── AbstractRingsZp64Poly.java
│       │   │                       │       ├── AbstractZp64Poly.java
│       │   │                       │       ├── NtlZp64Poly.java
│       │   │                       │       ├── RingsLagrangeZp64Poly.java
│       │   │                       │       ├── RingsNewtonZp64Poly.java
│       │   │                       │       ├── Zp64Poly.java
│       │   │                       │       └── Zp64PolyFactory.java
│       │   │                       └── utils/
│       │   │                           ├── BigDecimalUtils.java
│       │   │                           ├── BigIntegerUtils.java
│       │   │                           ├── BinaryUtils.java
│       │   │                           ├── BlockUtils.java
│       │   │                           ├── BytesUtils.java
│       │   │                           ├── CommonUtils.java
│       │   │                           ├── DoubleUtils.java
│       │   │                           ├── Gf2xUtils.java
│       │   │                           ├── IntUtils.java
│       │   │                           ├── LongUtils.java
│       │   │                           ├── ObjectUtils.java
│       │   │                           ├── PropertiesUtils.java
│       │   │                           ├── RankUtils.java
│       │   │                           └── SerializeUtils.java
│       │   └── resources/
│       │       ├── bristol/
│       │       │   ├── basic/
│       │       │   │   ├── adder64.txt
│       │       │   │   ├── aes_128.txt
│       │       │   │   ├── divide64.txt
│       │       │   │   ├── mult64.txt
│       │       │   │   ├── neg64.txt
│       │       │   │   └── sub64.txt
│       │       │   └── extend/
│       │       │       ├── adder64.txt
│       │       │       ├── aes_128.txt
│       │       │       ├── divide64.txt
│       │       │       ├── mult64.txt
│       │       │       ├── neg64.txt
│       │       │       └── sub64.txt
│       │       ├── gen_matrix/
│       │       │   ├── mx132by583.txt
│       │       │   ├── mx138by594.txt
│       │       │   ├── mx144by605.txt
│       │       │   ├── mx150by616.txt
│       │       │   ├── mx156by627.txt
│       │       │   ├── mx162by638.txt
│       │       │   ├── mx168by649.txt
│       │       │   ├── mx174by660.txt
│       │       │   ├── mx210by732.txt
│       │       │   ├── mx217by744.txt
│       │       │   ├── mx231by768.txt
│       │       │   ├── mx238by776.txt
│       │       │   ├── mx65by448.txt
│       │       │   ├── mx72by462.txt
│       │       │   ├── mx76by511.txt
│       │       │   ├── mx84by495.txt
│       │       │   └── mx90by495.txt
│       │       └── low_mc/
│       │           ├── lowmc_128_128_192.txt
│       │           ├── lowmc_128_128_20.txt
│       │           ├── lowmc_128_128_208.txt
│       │           ├── lowmc_128_128_21.txt
│       │           ├── lowmc_128_128_23.txt
│       │           ├── lowmc_128_128_287.txt
│       │           └── lowmc_128_128_32.txt
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── tool/
│           │                       ├── MathPreconditionsTest.java
│           │                       ├── bitmatrix/
│           │                       │   ├── dense/
│           │                       │   │   ├── DenseBitMatrixTest.java
│           │                       │   │   ├── SquareDenseBitMatrixEfficiencyTest.java
│           │                       │   │   └── SquareDenseBitMatrixTest.java
│           │                       │   ├── sparse/
│           │                       │   │   ├── ExtremeSparseBitMatrixTest.java
│           │                       │   │   ├── NaiveSparseBitMatrixTest.java
│           │                       │   │   └── TriSparseBitMatrixTest.java
│           │                       │   └── trans/
│           │                       │       ├── TransBitMatrixEfficiencyTest.java
│           │                       │       └── TransBitMatrixTest.java
│           │                       ├── bitvector/
│           │                       │   ├── BitVectorEfficiencyTest.java
│           │                       │   └── BitVectorTest.java
│           │                       ├── bristol/
│           │                       │   ├── BlockBmmLookupCodeTest.java
│           │                       │   ├── BristolFashionBmmGeneratorTest.java
│           │                       │   ├── BristolFashionEvaluatorTest.java
│           │                       │   ├── BristolFashionLowMcFileGeneratorTest.java
│           │                       │   └── GrayCoderGeneratorTest.java
│           │                       ├── coder/
│           │                       │   ├── Bch076By511CoderTest.java
│           │                       │   ├── HadamardCoderTest.java
│           │                       │   ├── LinearCoderTest.java
│           │                       │   ├── RandomCoderTest.java
│           │                       │   ├── RandomCoderUtilsTest.java
│           │                       │   └── ReputationCoderTest.java
│           │                       ├── crypto/
│           │                       │   ├── commit/
│           │                       │   │   └── CommitTest.java
│           │                       │   ├── crhf/
│           │                       │   │   ├── CrhfConsistencyTest.java
│           │                       │   │   ├── CrhfEfficiencyTest.java
│           │                       │   │   └── CrhfTest.java
│           │                       │   ├── ecc/
│           │                       │   │   ├── ByteEccConsistencyTest.java
│           │                       │   │   ├── ByteFullEccTest.java
│           │                       │   │   ├── ByteMulEccTest.java
│           │                       │   │   ├── ByteMulElligatorEccTest.java
│           │                       │   │   ├── EccConsistencyTest.java
│           │                       │   │   ├── EccEfficiencyTest.java
│           │                       │   │   ├── EccMixTest.java
│           │                       │   │   ├── EccTest.java
│           │                       │   │   └── cafe/
│           │                       │   │       ├── CafeConstantTimeUtilsTest.java
│           │                       │   │       ├── CafeConstantsTest.java
│           │                       │   │       ├── CafeEdwardsCompressedPointTest.java
│           │                       │   │       ├── CafeEdwardsPointTest.java
│           │                       │   │       ├── CafeEdwardsPrecomputeTableTest.java
│           │                       │   │       ├── CafeFieldElementTest.java
│           │                       │   │       ├── CafeRistrettoCompressedPointTest.java
│           │                       │   │       ├── CafeRistrettoPointTest.java
│           │                       │   │       ├── CafeScalarTest.java
│           │                       │   │       └── CafeUnpackedScalarTest.java
│           │                       │   ├── engine/
│           │                       │   │   └── Rijndael256EngineTest.java
│           │                       │   ├── hash/
│           │                       │   │   ├── HashConsistencyTest.java
│           │                       │   │   ├── HashEfficiencyTest.java
│           │                       │   │   └── HashTest.java
│           │                       │   ├── kdf/
│           │                       │   │   ├── KdfConsistencyTest.java
│           │                       │   │   ├── KdfEfficiencyTest.java
│           │                       │   │   └── KdfTest.java
│           │                       │   ├── kyber/
│           │                       │   │   └── KyberEngineTest.java
│           │                       │   ├── prf/
│           │                       │   │   ├── PrfEfficiencyTest.java
│           │                       │   │   └── PrfTest.java
│           │                       │   ├── prg/
│           │                       │   │   ├── PrgEfficiencyTest.java
│           │                       │   │   └── PrgTest.java
│           │                       │   ├── prp/
│           │                       │   │   ├── PrpConsistencyTest.java
│           │                       │   │   ├── PrpEfficiencyTest.java
│           │                       │   │   └── PrpTest.java
│           │                       │   ├── stream/
│           │                       │   │   ├── StreamCipherEfficiencyTest.java
│           │                       │   │   └── StreamCipherTest.java
│           │                       │   └── tcrhf/
│           │                       │       ├── TcrhfEfficiencyTest.java
│           │                       │       └── TcrhfTest.java
│           │                       ├── f3hash/
│           │                       │   ├── F3HashEfficiencyTest.java
│           │                       │   └── F3HashTest.java
│           │                       ├── galoisfield/
│           │                       │   ├── BigIntegerFieldTest.java
│           │                       │   ├── BigIntegerRingTest.java
│           │                       │   ├── BytesFieldEfficiencyTest.java
│           │                       │   ├── BytesFieldTest.java
│           │                       │   ├── BytesRingEfficiencyTest.java
│           │                       │   ├── BytesRingTest.java
│           │                       │   ├── GaloisfieldTestUtils.java
│           │                       │   ├── LongFieldEfficiencyTest.java
│           │                       │   ├── LongFieldTest.java
│           │                       │   ├── LongRingEfficiencyTest.java
│           │                       │   ├── LongRingTest.java
│           │                       │   ├── Z3ByteFieldTest.java
│           │                       │   ├── Z3UtilsTest.java
│           │                       │   ├── gf2e/
│           │                       │   │   ├── Gf2eConsistencyTest.java
│           │                       │   │   ├── Gf2eGadgetTest.java
│           │                       │   │   ├── Gf2eManagerTest.java
│           │                       │   │   ├── Gf2eTest.java
│           │                       │   │   └── JdkGf2eLookupTableTest.java
│           │                       │   ├── gf2k/
│           │                       │   │   ├── Gf2kConsistencyTest.java
│           │                       │   │   ├── Gf2kGadgetTest.java
│           │                       │   │   └── Gf2kTest.java
│           │                       │   ├── sgf2k/
│           │                       │   │   ├── Sgf2kConsistencyTest.java
│           │                       │   │   ├── Sgf2kEfficiencyTest.java
│           │                       │   │   ├── Sgf2kManagerTest.java
│           │                       │   │   └── Sgf2kTest.java
│           │                       │   ├── zl/
│           │                       │   │   ├── Zl64SpecialTest.java
│           │                       │   │   └── ZlTest.java
│           │                       │   ├── zn/
│           │                       │   │   └── ZnTest.java
│           │                       │   ├── zn64/
│           │                       │   │   └── Zn64Test.java
│           │                       │   ├── zp/
│           │                       │   │   ├── ZpGadgetTest.java
│           │                       │   │   └── ZpTest.java
│           │                       │   └── zp64/
│           │                       │       ├── Zp64GadgetTest.java
│           │                       │       └── Zp64Test.java
│           │                       ├── hash/
│           │                       │   ├── IntHashEfficiencyTest.java
│           │                       │   ├── IntHashTest.java
│           │                       │   ├── LongHashEfficiencyTest.java
│           │                       │   ├── LongHashTest.java
│           │                       │   └── bobhash/
│           │                       │       ├── BobIntHashTest.java
│           │                       │       └── BobLongHashTest.java
│           │                       ├── hashbin/
│           │                       │   ├── HashBinTestUtils.java
│           │                       │   ├── MaxBinSizeUtilsTest.java
│           │                       │   ├── object/
│           │                       │   │   ├── EmptyPadHashBinEfficiencyTest.java
│           │                       │   │   ├── EmptyPadHashBinTest.java
│           │                       │   │   ├── PhaseHashBinTest.java
│           │                       │   │   ├── RandomPadHashBinEfficiencyTest.java
│           │                       │   │   ├── RandomPadHashBinTest.java
│           │                       │   │   ├── TwoChoiceHashBinTest.java
│           │                       │   │   └── cuckoo/
│           │                       │   │       ├── CuckooHashBinEfficiencyTest.java
│           │                       │   │       ├── CuckooHashBinParamsTest.java
│           │                       │   │       ├── CuckooHashBinTest.java
│           │                       │   │       ├── NoStashCuckooHashBinTest.java
│           │                       │   │       └── OneHashCuckooHashBinTest.java
│           │                       │   └── primitive/
│           │                       │       ├── SimpleIntHashBinEfficiencyTest.java
│           │                       │       ├── SimpleIntHashBinTest.java
│           │                       │       └── cuckoo/
│           │                       │           ├── IntCuckooHashBinEfficiencyTest.java
│           │                       │           └── IntCuckooHashBinTest.java
│           │                       ├── metrics/
│           │                       │   ├── HeavyHitterMetricsTest.java
│           │                       │   └── KendallCorrelationTest.java
│           │                       ├── network/
│           │                       │   ├── PermutationNetworkEfficiencyTest.java
│           │                       │   ├── PermutationNetworkTest.java
│           │                       │   ├── benes/
│           │                       │   │   └── BenesNetworkTest.java
│           │                       │   ├── decomposer/
│           │                       │   │   ├── PermutationDecomposerEfficiencyTest.java
│           │                       │   │   └── PermutationDecomposerTest.java
│           │                       │   └── waksman/
│           │                       │       └── WaksmanNetworkTest.java
│           │                       ├── polynomial/
│           │                       │   ├── gf2e/
│           │                       │   │   ├── Gf2ePolyEfficiencyTest.java
│           │                       │   │   └── Gf2ePolyTest.java
│           │                       │   ├── zp/
│           │                       │   │   ├── ZpPolyEfficiencyTest.java
│           │                       │   │   ├── ZpPolyTest.java
│           │                       │   │   ├── ZpTreePolyEfficiencyTest.java
│           │                       │   │   └── ZpTreePolyTest.java
│           │                       │   └── zp64/
│           │                       │       ├── Zp64PolyEfficiencyTest.java
│           │                       │       └── Zp64PolyTest.java
│           │                       └── utils/
│           │                           ├── BigIntegerUtilsTest.java
│           │                           ├── BinaryUtilsTest.java
│           │                           ├── BlockUtilsEfficiencyTest.java
│           │                           ├── BlockUtilsTest.java
│           │                           ├── BytesEfficiencyTest.java
│           │                           ├── BytesUtilsTest.java
│           │                           ├── CommonUtilsTest.java
│           │                           ├── DoubleUtilsTest.java
│           │                           ├── Gf2xUtilsTest.java
│           │                           ├── IntUtilsTest.java
│           │                           ├── LongUtilsTest.java
│           │                           └── SerializeUtilsTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-crypto-algs/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── crypto/
│       │                       └── algs/
│       │                           ├── iprf/
│       │                           │   ├── InversePrf.java
│       │                           │   └── PnmSampler.java
│       │                           ├── main/
│       │                           │   ├── AlgsMain.java
│       │                           │   └── popf/
│       │                           │       └── PopfMain.java
│       │                           ├── ope/
│       │                           │   ├── Bclo09LongOpeEngine.java
│       │                           │   └── Zlp24LongRopeEngine.java
│       │                           ├── popf/
│       │                           │   └── Zlp24LongPopfEngine.java
│       │                           ├── restriction/
│       │                           │   ├── AbstractLongRestriction.java
│       │                           │   ├── LongEmptyRestriction.java
│       │                           │   ├── LongLinearBoundRestriction.java
│       │                           │   ├── LongLinearMaxBoundRestriction.java
│       │                           │   ├── LongLinearMinBoundRestriction.java
│       │                           │   └── LongRestriction.java
│       │                           ├── smprp/
│       │                           │   ├── AdSmallDomainPrp.java
│       │                           │   ├── SmallDomainPrp.java
│       │                           │   └── SmallDomainPrpFactory.java
│       │                           └── utils/
│       │                               ├── distribution/
│       │                               │   ├── Coins.java
│       │                               │   ├── FastHgd.java
│       │                               │   ├── Hgd.java
│       │                               │   ├── HgdFactory.java
│       │                               │   ├── PreciseHgd.java
│       │                               │   └── RandomHgd.java
│       │                               └── range/
│       │                                   ├── BigIntegerRange.java
│       │                                   └── LongRange.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── crypto/
│           │                   └── algs/
│           │                       ├── iprf/
│           │                       │   └── PnmSamplerTest.java
│           │                       ├── ope/
│           │                       │   ├── LongOpeTest.java
│           │                       │   └── LongRopeTest.java
│           │                       ├── popf/
│           │                       │   └── LongPopfTest.java
│           │                       ├── smprp/
│           │                       │   └── SmallDomainPrpTest.java
│           │                       └── utils/
│           │                           ├── distribution/
│           │                           │   ├── CoinsTest.java
│           │                           │   └── HgdTest.java
│           │                           └── range/
│           │                               ├── BigIntegerRangeTest.java
│           │                               └── LongRangeTest.java
│           └── resources/
│               ├── conf_popf_example.conf
│               └── log4j.properties
├── mpc4j-crypto-fhe/
│   ├── mpc4j-crypto-fhe-seal/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── edu/
│   │       │           └── alibaba/
│   │       │               └── mpc4j/
│   │       │                   └── crypto/
│   │       │                       └── fhe/
│   │       │                           └── seal/
│   │       │                               ├── BatchEncoder.java
│   │       │                               ├── Ciphertext.java
│   │       │                               ├── CkksEncoder.java
│   │       │                               ├── Decryptor.java
│   │       │                               ├── Encryptor.java
│   │       │                               ├── Evaluator.java
│   │       │                               ├── GaloisKeys.java
│   │       │                               ├── KeyGenerator.java
│   │       │                               ├── KswitchKeys.java
│   │       │                               ├── Plaintext.java
│   │       │                               ├── PublicKey.java
│   │       │                               ├── RelinKeys.java
│   │       │                               ├── SecretKey.java
│   │       │                               ├── context/
│   │       │                               │   ├── EncryptionParameterQualifiers.java
│   │       │                               │   ├── EncryptionParameters.java
│   │       │                               │   ├── ErrorType.java
│   │       │                               │   ├── ParmsId.java
│   │       │                               │   ├── SchemeType.java
│   │       │                               │   └── SealContext.java
│   │       │                               ├── iterator/
│   │       │                               │   ├── CoeffIterator.java
│   │       │                               │   ├── PolyIterator.java
│   │       │                               │   ├── RnsIterator.java
│   │       │                               │   ├── SealIterator.java
│   │       │                               │   └── StrideIterator.java
│   │       │                               ├── modulus/
│   │       │                               │   ├── AbstractModulus.java
│   │       │                               │   ├── CoeffModulus.java
│   │       │                               │   ├── Modulus.java
│   │       │                               │   └── PlainModulus.java
│   │       │                               ├── ntt/
│   │       │                               │   ├── ModArithLazy.java
│   │       │                               │   ├── NttHandler.java
│   │       │                               │   ├── NttTables.java
│   │       │                               │   └── NttTool.java
│   │       │                               ├── rand/
│   │       │                               │   ├── AbstractPrng.java
│   │       │                               │   ├── AbstractUniformRandomGeneratorInfo.java
│   │       │                               │   ├── Blake2xbPrng.java
│   │       │                               │   ├── ClippedNormalDistribution.java
│   │       │                               │   ├── PrngType.java
│   │       │                               │   ├── Shake256Prng.java
│   │       │                               │   ├── UniformRandomGenerator.java
│   │       │                               │   ├── UniformRandomGeneratorFactory.java
│   │       │                               │   ├── UniformRandomGeneratorInfo.java
│   │       │                               │   └── primitive/
│   │       │                               │       ├── Blake2.java
│   │       │                               │       ├── Blake2b.java
│   │       │                               │       ├── Blake2xb.java
│   │       │                               │       └── Shake256.java
│   │       │                               ├── rns/
│   │       │                               │   ├── BaseConverter.java
│   │       │                               │   ├── RnsBase.java
│   │       │                               │   └── RnsTool.java
│   │       │                               ├── rq/
│   │       │                               │   ├── PolyArithmeticSmallMod.java
│   │       │                               │   └── PolyCore.java
│   │       │                               ├── serialization/
│   │       │                               │   ├── ComprModeType.java
│   │       │                               │   ├── SealCloneable.java
│   │       │                               │   ├── SealHeader.java
│   │       │                               │   ├── SealSerializable.java
│   │       │                               │   ├── SealVersion.java
│   │       │                               │   └── Serialization.java
│   │       │                               ├── utils/
│   │       │                               │   ├── AbstractDynArray.java
│   │       │                               │   ├── AbstractGaloisTool.java
│   │       │                               │   ├── Arithmetic.java
│   │       │                               │   ├── ComplexRoots.java
│   │       │                               │   ├── Constants.java
│   │       │                               │   ├── DwtHandler.java
│   │       │                               │   ├── DynArray.java
│   │       │                               │   ├── GaloisTool.java
│   │       │                               │   ├── GlobalVariables.java
│   │       │                               │   ├── HashFunction.java
│   │       │                               │   ├── HeStdParms.java
│   │       │                               │   ├── RingLwe.java
│   │       │                               │   ├── ScalingVariant.java
│   │       │                               │   └── ValCheck.java
│   │       │                               └── zq/
│   │       │                                   ├── Common.java
│   │       │                                   ├── MultiplyUintModOperand.java
│   │       │                                   ├── Numth.java
│   │       │                                   ├── UintArithmetic.java
│   │       │                                   ├── UintArithmeticMod.java
│   │       │                                   ├── UintArithmeticSmallMod.java
│   │       │                                   └── UintCore.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── edu/
│   │           │       └── alibaba/
│   │           │           └── mpc4j/
│   │           │               └── crypto/
│   │           │                   └── fhe/
│   │           │                       └── seal/
│   │           │                           ├── BatchEncoderTest.java
│   │           │                           ├── CiphertextTest.java
│   │           │                           ├── CkksTest.java
│   │           │                           ├── EncryptorTest.java
│   │           │                           ├── EvaluatorTest.java
│   │           │                           ├── GaloisKeysTest.java
│   │           │                           ├── KeyGeneratorTest.java
│   │           │                           ├── PlaintextTest.java
│   │           │                           ├── PublicKeyTest.java
│   │           │                           ├── RelinKeysTest.java
│   │           │                           ├── SecretKeyTest.java
│   │           │                           ├── compatibility/
│   │           │                           │   └── SealBfvCompatibleTest.java
│   │           │                           ├── context/
│   │           │                           │   ├── EncryptionParametersTest.java
│   │           │                           │   └── SealContextTest.java
│   │           │                           ├── examples/
│   │           │                           │   ├── Example01BfvBasicsTest.java
│   │           │                           │   ├── Example02EncodersTest.java
│   │           │                           │   ├── Example03LevelsTest.java
│   │           │                           │   ├── Example04BgvBasicsTest.java
│   │           │                           │   ├── Example05CkksBasicsTest.java
│   │           │                           │   ├── Example06RotationTest.java
│   │           │                           │   ├── Example07SerializationTest.java
│   │           │                           │   ├── Example08PerformanceTest.java
│   │           │                           │   └── ExamplesUtils.java
│   │           │                           ├── modulus/
│   │           │                           │   ├── CoeffModulusTest.java
│   │           │                           │   └── ModulusTest.java
│   │           │                           ├── ntt/
│   │           │                           │   └── NttTest.java
│   │           │                           ├── rand/
│   │           │                           │   ├── UniformRandomGeneratorTest.java
│   │           │                           │   └── primitive/
│   │           │                           │       ├── Blake2bTest.java
│   │           │                           │       ├── Blake2xbTest.java
│   │           │                           │       └── Shake256Test.java
│   │           │                           ├── rns/
│   │           │                           │   ├── BaseConverterTest.java
│   │           │                           │   ├── RnsBaseTest.java
│   │           │                           │   └── RnsToolTest.java
│   │           │                           ├── rq/
│   │           │                           │   ├── PolyArithmeticSmallModTest.java
│   │           │                           │   └── PolyCoreTest.java
│   │           │                           ├── serialization/
│   │           │                           │   ├── SerializationTest.java
│   │           │                           │   └── TestCloneable.java
│   │           │                           ├── utils/
│   │           │                           │   ├── ClipNormalTest.java
│   │           │                           │   ├── ComplexRootsTest.java
│   │           │                           │   ├── DynArrayTest.java
│   │           │                           │   ├── GaloisToolTest.java
│   │           │                           │   └── HashFunctionTest.java
│   │           │                           └── zq/
│   │           │                               ├── CommonTest.java
│   │           │                               ├── NumthTest.java
│   │           │                               ├── StringToUint64Test.java
│   │           │                               ├── Uint64ToStringTest.java
│   │           │                               ├── UintArithmeticModTest.java
│   │           │                               ├── UintArithmeticSmallModTest.java
│   │           │                               ├── UintArithmeticTest.java
│   │           │                               └── UintCoreTest.java
│   │           └── resources/
│   │               ├── compatibility/
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_ciphertext_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_ciphertext_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_galois_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_galois_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_public_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_public_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_relinearization_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_relinearization_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_secret_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_secret_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_seed_ciphertext_data.txt
│   │               │   └── bfv_4096_plain_16_coeff_20_20_seed_ciphertext_hex.txt
│   │               └── log4j.properties
│   └── pom.xml
├── mpc4j-crypto-phe/
│   ├── LICENSE.txt
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── crypto/
│       │                       └── phe/
│       │                           ├── AbstractPheEngine.java
│       │                           ├── PheContextMismatchException.java
│       │                           ├── PheDecodeException.java
│       │                           ├── PheEncodeException.java
│       │                           ├── PheEngine.java
│       │                           ├── PheFactory.java
│       │                           ├── PheMathUtils.java
│       │                           ├── PheRuntimeException.java
│       │                           ├── PheSecLevel.java
│       │                           ├── PheType.java
│       │                           ├── impl/
│       │                           │   ├── ou98/
│       │                           │   │   ├── Ou98PheEngine.java
│       │                           │   │   ├── Ou98PhePrivateKey.java
│       │                           │   │   └── Ou98PhePublicKey.java
│       │                           │   └── pai99/
│       │                           │       ├── Pai99PheEngine.java
│       │                           │       ├── Pai99PhePrivateKey.java
│       │                           │       └── Pai99PhePublicKey.java
│       │                           └── params/
│       │                               ├── PheCiphertext.java
│       │                               ├── PheKeyGenParams.java
│       │                               ├── PheKeyParams.java
│       │                               ├── PheParams.java
│       │                               ├── PhePlaintext.java
│       │                               ├── PhePlaintextEncoder.java
│       │                               ├── PhePrivateKey.java
│       │                               └── PhePublicKey.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── crypto/
│           │                   └── phe/
│           │                       ├── PheEngineTestConfiguration.java
│           │                       ├── PheParamsTestConfiguration.java
│           │                       ├── PheTestUtils.java
│           │                       ├── impl/
│           │                       │   ├── PheAdditionTest.java
│           │                       │   ├── PheDivisionTest.java
│           │                       │   ├── PheEfficiencyTest.java
│           │                       │   ├── PheKeyGenTest.java
│           │                       │   ├── PheMultiplicationTest.java
│           │                       │   ├── PheRawTest.java
│           │                       │   └── PheSubtractionTest.java
│           │                       └── params/
│           │                           ├── PheCiphertextTest.java
│           │                           ├── PhePlaintextAdditionTest.java
│           │                           ├── PhePlaintextDivisionTest.java
│           │                           ├── PhePlaintextMultiplicationTest.java
│           │                           ├── PhePlaintextSubtractionTest.java
│           │                           └── PhePlaintextTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-cdp/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── cdp/
│       │                           ├── Cdp.java
│       │                           ├── CdpConfig.java
│       │                           ├── nominal/
│       │                           │   ├── Base2ExpCdp.java
│       │                           │   ├── Base2ExpCdpConfig.java
│       │                           │   ├── ExpCdp.java
│       │                           │   ├── ExpCdpConfig.java
│       │                           │   ├── NominalCdp.java
│       │                           │   ├── NominalCdpConfig.java
│       │                           │   ├── NominalCdpFactory.java
│       │                           │   ├── NounPair.java
│       │                           │   └── NounPairDistance.java
│       │                           └── numeric/
│       │                               ├── integral/
│       │                               │   ├── IntegralCdp.java
│       │                               │   ├── IntegralCdpConfig.java
│       │                               │   ├── IntegralCdpFactory.java
│       │                               │   ├── bound/
│       │                               │   │   ├── Base2ExpBoundIntegralCdp.java
│       │                               │   │   ├── Base2ExpBoundIntegralCdpConfig.java
│       │                               │   │   ├── BoundIntegralCdp.java
│       │                               │   │   ├── BoundIntegralCdpConfig.java
│       │                               │   │   ├── BoundIntegralCdpFactory.java
│       │                               │   │   ├── ExpBoundIntegralCdp.java
│       │                               │   │   ├── ExpBoundIntegralCdpConfig.java
│       │                               │   │   ├── NaiveBoundIntegralCdp.java
│       │                               │   │   └── NaiveBoundIntegralCdpConfig.java
│       │                               │   └── unbound/
│       │                               │       ├── UnboundIntegralCdp.java
│       │                               │       ├── UnboundIntegralCdpConfig.java
│       │                               │       ├── UnboundIntegralCdpFactory.java
│       │                               │       └── geometric/
│       │                               │           ├── ApacheGeometricCdp.java
│       │                               │           ├── ApacheGeometricCdpConfig.java
│       │                               │           ├── DiscreteGeometricCdp.java
│       │                               │           ├── DiscreteGeometricCdpConfig.java
│       │                               │           ├── GeometricCdp.java
│       │                               │           ├── GeometricCdpConfig.java
│       │                               │           └── GeometricCdpFactory.java
│       │                               └── real/
│       │                                   ├── RealCdp.java
│       │                                   ├── RealCdpConfig.java
│       │                                   ├── RealCdpFactory.java
│       │                                   ├── bound/
│       │                                   │   ├── BoundRealCdp.java
│       │                                   │   ├── BoundRealCdpConfig.java
│       │                                   │   ├── BoundRealCdpFactory.java
│       │                                   │   ├── NaiveBoundRealCdp.java
│       │                                   │   └── NaiveBoundRealCdpConfig.java
│       │                                   └── unbound/
│       │                                       ├── ApacheLaplaceCdp.java
│       │                                       ├── ApacheLaplaceCdpConfig.java
│       │                                       ├── GoogleLaplaceCdp.java
│       │                                       ├── GoogleLaplaceCdpConfig.java
│       │                                       ├── StaircaseCdp.java
│       │                                       ├── StaircaseCdpConfig.java
│       │                                       ├── UnboundRealCdp.java
│       │                                       ├── UnboundRealCdpConfig.java
│       │                                       └── UnboundRealCdpFactory.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── cdp/
│           │                       ├── nominal/
│           │                       │   ├── AbstractNominalCdpTest.java
│           │                       │   ├── Base2ExpCdpTest.java
│           │                       │   └── ExpCdpTest.java
│           │                       └── numeric/
│           │                           ├── integral/
│           │                           │   ├── bound/
│           │                           │   │   ├── AbstractBoundIntegralCdpTest.java
│           │                           │   │   ├── Base2ExpBoundIntegralCdpTest.java
│           │                           │   │   ├── ExpBoundIntegralCdpTest.java
│           │                           │   │   └── NaiveBoundIntegralCdpTest.java
│           │                           │   └── unbound/
│           │                           │       ├── AbstractUnboundIntegralCdpTest.java
│           │                           │       ├── ApacheGeometricCdpTest.java
│           │                           │       └── DiscreteGeometricCdpTest.java
│           │                           └── real/
│           │                               ├── bound/
│           │                               │   ├── AbstractBoundRealCdpTest.java
│           │                               │   └── NaiveBoundRealCdpTest.java
│           │                               └── unbound/
│           │                                   ├── AbstractUnboundRealCdpTest.java
│           │                                   ├── ApacheLaplaceTest.java
│           │                                   ├── GoogleLaplaceTest.java
│           │                                   └── StaircaseCdpTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-ldp/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── ldp/
│       │                           ├── Ldp.java
│       │                           ├── LdpConfig.java
│       │                           ├── nominal/
│       │                           │   ├── NominalLdp.java
│       │                           │   ├── NominalLdpConfig.java
│       │                           │   ├── binary/
│       │                           │   │   ├── BinaryLdp.java
│       │                           │   │   ├── BinaryLdpConfig.java
│       │                           │   │   ├── BinaryLdpFactory.java
│       │                           │   │   ├── RandomResponseLdp.java
│       │                           │   │   └── RandomResponseLdpConfig.java
│       │                           │   └── encode/
│       │                           │       ├── DirectEncodeLdp.java
│       │                           │       ├── DirectEncodeLdpConfig.java
│       │                           │       ├── EncodeLdp.java
│       │                           │       ├── EncodeLdpConfig.java
│       │                           │       └── EncodeLdpFactory.java
│       │                           ├── numeric/
│       │                           │   ├── integral/
│       │                           │   │   ├── AdjExpMapIntegralLdp.java
│       │                           │   │   ├── AdjExpMapIntegralLdpConfig.java
│       │                           │   │   ├── AdjMapIntegralLdp.java
│       │                           │   │   ├── AdjMapIntegralLdpConfig.java
│       │                           │   │   ├── GlobalExpMapIntegralLdp.java
│       │                           │   │   ├── GlobalExpMapIntegralLdpConfig.java
│       │                           │   │   ├── GlobalMapIntegralLdp.java
│       │                           │   │   ├── GlobalMapIntegralLdpConfig.java
│       │                           │   │   ├── IntegralLdp.java
│       │                           │   │   ├── IntegralLdpConfig.java
│       │                           │   │   ├── IntegralLdpFactory.java
│       │                           │   │   ├── LocalExpMapIntegralLdp.java
│       │                           │   │   ├── LocalExpMapIntegralLdpConfig.java
│       │                           │   │   ├── LocalMapIntegralLdp.java
│       │                           │   │   ├── LocalMapIntegralLdpConfig.java
│       │                           │   │   ├── NaiveRangeIntegralLdp.java
│       │                           │   │   └── NaiveRangeIntegralLdpConfig.java
│       │                           │   └── real/
│       │                           │       ├── AdjMapRealLdp.java
│       │                           │       ├── AdjMapRealLdpConfig.java
│       │                           │       ├── GlobalMapRealLdp.java
│       │                           │       ├── GlobalMapRealLdpConfig.java
│       │                           │       ├── LocalMapRealLdp.java
│       │                           │       ├── LocalMapRealLdpConfig.java
│       │                           │       ├── NaiveRangeRealLdp.java
│       │                           │       ├── NaiveRangeRealLdpConfig.java
│       │                           │       ├── RealLdp.java
│       │                           │       ├── RealLdpConfig.java
│       │                           │       └── RealLdpFactory.java
│       │                           └── range/
│       │                               ├── ApacheLaplaceLdp.java
│       │                               ├── ApacheLaplaceLdpConfig.java
│       │                               ├── GoogleLaplaceLdp.java
│       │                               ├── GoogleLaplaceLdpConfig.java
│       │                               ├── HybridLdp.java
│       │                               ├── HybridLdpConfig.java
│       │                               ├── MinimaxLdp.java
│       │                               ├── MinimaxLdpConfig.java
│       │                               ├── PiecewiseLdp.java
│       │                               ├── PiecewiseLdpConfig.java
│       │                               ├── RangeLdp.java
│       │                               ├── RangeLdpConfig.java
│       │                               └── RangeLdpFactory.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── ldp/
│           │                       ├── nominal/
│           │                       │   ├── binary/
│           │                       │   │   ├── AbstractBinaryLdpTest.java
│           │                       │   │   └── RandomResponseLdpTest.java
│           │                       │   └── encode/
│           │                       │       ├── AbstractEncodeLdpTest.java
│           │                       │       └── DirectEncodeLdpTest.java
│           │                       ├── numeric/
│           │                       │   ├── integral/
│           │                       │   │   ├── AbstractIntegralLdpTest.java
│           │                       │   │   ├── AdjExpMapIntegralLdpTest.java
│           │                       │   │   ├── AdjMapIntegralLdpTest.java
│           │                       │   │   ├── GlobalExpMapIntegralLdpTest.java
│           │                       │   │   ├── GlobalMapIntegralLdpTest.java
│           │                       │   │   ├── LocalExpMapIntegralLdpTest.java
│           │                       │   │   ├── LocalMapIntegralLdpTest.java
│           │                       │   │   └── NaiveRangeIntegralLdpTest.java
│           │                       │   └── real/
│           │                       │       ├── AbstractRealLdpTest.java
│           │                       │       ├── AdjMapRealLdpTest.java
│           │                       │       ├── GlobalMapRealLdpTest.java
│           │                       │       ├── LocalMapRealLdpTest.java
│           │                       │       └── NaiveRangeRealLdpTest.java
│           │                       └── range/
│           │                           ├── AbstractRangeLdpTest.java
│           │                           ├── ApacheLaplaceLdpTest.java
│           │                           ├── GoogleLaplaceLdpTest.java
│           │                           ├── HybridLdpTest.java
│           │                           ├── MinimaxLdpTest.java
│           │                           └── PiecewiseLdpTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-service/
│   ├── config/
│   │   ├── kosarak.conf
│   │   ├── synthetic_data.conf
│   │   └── synthetic_data_test.conf
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── service/
│       │                           ├── fo/
│       │                           │   ├── AbstractFoLdpClient.java
│       │                           │   ├── AbstractFoLdpServer.java
│       │                           │   ├── FoLdpClient.java
│       │                           │   ├── FoLdpFactory.java
│       │                           │   ├── FoLdpServer.java
│       │                           │   ├── cms/
│       │                           │   │   ├── AppleCmsFoLdpClient.java
│       │                           │   │   ├── AppleCmsFoLdpServer.java
│       │                           │   │   ├── AppleHcmsFoLdpClient.java
│       │                           │   │   └── AppleHcmsFoLdpServer.java
│       │                           │   ├── config/
│       │                           │   │   ├── AppleCmsFoLdpConfig.java
│       │                           │   │   ├── AppleHcmsFoLdpConfig.java
│       │                           │   │   ├── BasicFoLdpConfig.java
│       │                           │   │   ├── FlhFoLdpConfig.java
│       │                           │   │   ├── FoLdpConfig.java
│       │                           │   │   ├── OlhFoLdpConfig.java
│       │                           │   │   └── RapporFoLdpConfig.java
│       │                           │   ├── de/
│       │                           │   │   ├── DeIndexFoLdpClient.java
│       │                           │   │   ├── DeIndexFoLdpServer.java
│       │                           │   │   ├── DeStringFoLdpClient.java
│       │                           │   │   └── DeStringFoLdpServer.java
│       │                           │   ├── hadamard/
│       │                           │   │   ├── HmFoLdpClient.java
│       │                           │   │   ├── HmFoLdpServer.java
│       │                           │   │   ├── HmLowEpsFoLdpClient.java
│       │                           │   │   ├── HmLowEpsFoLdpServer.java
│       │                           │   │   ├── HrFoLdpClient.java
│       │                           │   │   ├── HrFoLdpServer.java
│       │                           │   │   ├── HrHighEpsFoLdpClient.java
│       │                           │   │   └── HrHighEpsFoLdpServer.java
│       │                           │   ├── lh/
│       │                           │   │   ├── BlhFoLdpClient.java
│       │                           │   │   ├── BlhFoLdpServer.java
│       │                           │   │   ├── FlhFoLdpClient.java
│       │                           │   │   ├── FlhFoLdpServer.java
│       │                           │   │   ├── OlhFoLdpClient.java
│       │                           │   │   └── OlhFoLdpServer.java
│       │                           │   ├── rappor/
│       │                           │   │   ├── RapporFoLdpClient.java
│       │                           │   │   ├── RapporFoLdpServer.java
│       │                           │   │   └── RapporFoLdpUtils.java
│       │                           │   └── ue/
│       │                           │       ├── OueFoLdpClient.java
│       │                           │       ├── OueFoLdpServer.java
│       │                           │       ├── SueFoLdpClient.java
│       │                           │       └── SueFoLdpServer.java
│       │                           ├── heavyhitter/
│       │                           │   ├── AbstractHhLdpClient.java
│       │                           │   ├── AbstractHhLdpServer.java
│       │                           │   ├── HhLdpClient.java
│       │                           │   ├── HhLdpFactory.java
│       │                           │   ├── HhLdpServer.java
│       │                           │   ├── HhLdpServerState.java
│       │                           │   ├── config/
│       │                           │   │   ├── BaseHhLdpConfig.java
│       │                           │   │   ├── BdrHhgHhLdpConfig.java
│       │                           │   │   ├── BgrHgHhLdpConfig.java
│       │                           │   │   ├── CnrHhgHhLdpConfig.java
│       │                           │   │   ├── DsrHgHhLdpConfig.java
│       │                           │   │   ├── FoHhLdpConfig.java
│       │                           │   │   ├── HgHhLdpConfig.java
│       │                           │   │   ├── HhLdpConfig.java
│       │                           │   │   └── HhgHhLdpConfig.java
│       │                           │   ├── fo/
│       │                           │   │   ├── FoHhLdpClient.java
│       │                           │   │   └── FoHhLdpServer.java
│       │                           │   ├── hg/
│       │                           │   │   ├── BdrHhgHhLdpClient.java
│       │                           │   │   ├── BdrHhgHhLdpServer.java
│       │                           │   │   ├── BgrHgHhLdpClient.java
│       │                           │   │   ├── BgrHgHhLdpServer.java
│       │                           │   │   ├── CnrHhgHhLdpClient.java
│       │                           │   │   ├── CnrHhgHhLdpServer.java
│       │                           │   │   ├── DsrHgHhLdpClient.java
│       │                           │   │   ├── DsrHgHhLdpServer.java
│       │                           │   │   └── HhgHhLdpServer.java
│       │                           │   └── utils/
│       │                           │       ├── EmptyHhLdpServerContext.java
│       │                           │       ├── HgHhLdpServerContext.java
│       │                           │       └── HhLdpServerContext.java
│       │                           ├── main/
│       │                           │   ├── HhLdpAggMetrics.java
│       │                           │   ├── HhLdpMain.java
│       │                           │   ├── HhLdpMetrics.java
│       │                           │   └── LdpServiceMain.java
│       │                           ├── structure/
│       │                           │   ├── HeavyGuardian.java
│       │                           │   ├── NaiveStreamCounter.java
│       │                           │   └── StreamCounter.java
│       │                           └── tool/
│       │                               ├── BucketDomain.java
│       │                               ├── BucketDoubleComparator.java
│       │                               ├── BucketIntegerComparator.java
│       │                               ├── Domain.java
│       │                               ├── FingerprintUtils.java
│       │                               ├── HeavyGuardianUtils.java
│       │                               └── StreamDataUtils.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── service/
│           │                       ├── LdpTestDataUtils.java
│           │                       ├── fo/
│           │                       │   ├── FoLdpEfficiencyTest.java
│           │                       │   └── FoLdpTest.java
│           │                       ├── heavyhitter/
│           │                       │   ├── HgHhLdpTest.java
│           │                       │   ├── HhLdpEfficiencyTest.java
│           │                       │   ├── HhLdpTest.java
│           │                       │   └── SingleHgHhLdpTest.java
│           │                       ├── main/
│           │                       │   └── HhLdpMainTest.java
│           │                       ├── structure/
│           │                       │   └── StreamCounterTest.java
│           │                       └── tool/
│           │                           ├── FingerprintUtilsTest.java
│           │                           └── StreamDataUtilsTest.java
│           └── resources/
│               ├── log4j.properties
│               ├── stream_counter_example_data.txt
│               └── test_config/
│                   ├── hh_ldp_test_config_alpha.conf
│                   ├── hh_ldp_test_config_default.conf
│                   ├── hh_ldp_test_config_empty_fo_types.conf
│                   ├── hh_ldp_test_config_empty_hg_types.conf
│                   ├── hh_ldp_test_config_empty_plain.conf
│                   ├── hh_ldp_test_config_empty_report_postfix.conf
│                   ├── hh_ldp_test_config_gammah.conf
│                   ├── hh_ldp_test_config_gammah_no_warmup.conf
│                   ├── hh_ldp_test_config_lambdal.conf
│                   ├── hh_ldp_test_config_no_domain.conf
│                   ├── hh_ldp_test_config_no_gammah.conf
│                   ├── hh_ldp_test_config_no_lambdal.conf
│                   └── hh_ldp_test_config_zero_warmup.conf
├── mpc4j-native-fhe/
│   ├── CMakeLists.txt
│   ├── README.md
│   ├── apsi.cpp
│   ├── apsi.h
│   ├── index_pir.cpp
│   ├── index_pir.h
│   ├── pir/
│   │   ├── edu_alibaba_mpc4j_work_psipir_Lpzl24BatchPirNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_work_psipir_Lpzl24BatchPirNativeUtils.h
│   │   └── std/
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_cw_CwStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_cw_CwStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_fast_FastStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_fast_FastStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_mul_MulStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_mul_MulStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_onion_OnionStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_onion_OnionStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_seal_SealStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_seal_SealStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_vectorized_VectorizedStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_vectorized_VectorizedStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_xpir_XpirStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_xpir_XpirStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_ks_labelpsi_LabelpsiStdKsPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_ks_labelpsi_LabelpsiStdKsPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_kw_pantheon_PantheonStdKwPirNativeUtils.cpp
│   │       └── edu_alibaba_mpc4j_s2pc_pir_stdpir_kw_pantheon_PantheonStdKwPirNativeUtils.h
│   ├── polynomials.cpp
│   ├── polynomials.h
│   ├── random.cpp
│   ├── random.h
│   ├── serialize.cpp
│   ├── serialize.h
│   ├── tfhe/
│   │   ├── params.h
│   │   ├── rns.h
│   │   ├── tfhe.cpp
│   │   ├── tfhe.h
│   │   ├── util.cpp
│   │   └── util.h
│   ├── upso/
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_pdsm_Sj23PdsmUcpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_pdsm_Sj23PdsmUcpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_peqt_Sj23PeqtUcpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_peqt_Sj23PeqtUcpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsi_cmg21_Cmg21UpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsi_cmg21_Cmg21UpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsu_tcl23_Tcl23UpsuNativeUtils.cpp
│   │   └── edu_alibaba_mpc4j_s2pc_upso_upsu_tcl23_Tcl23UpsuNativeUtils.h
│   ├── utils.cpp
│   └── utils.h
├── mpc4j-native-fourq/
│   ├── AMD64/
│   │   ├── consts.c
│   │   ├── fp2_1271.S
│   │   ├── fp2_1271_AVX2.S
│   │   └── fp_x64.h
│   ├── ARM64/
│   │   └── fp_arm64.h
│   ├── CMakeLists.txt
│   ├── FourQ.h
│   ├── FourQ_api.h
│   ├── FourQ_internal.h
│   ├── FourQ_params.h
│   ├── FourQ_tables.h
│   ├── LICENSE.txt
│   ├── README.md
│   ├── crypto_util.c
│   ├── eccp2.c
│   ├── eccp2_core.c
│   ├── eccp2_no_endo.c
│   ├── generic/
│   │   └── fp.h
│   ├── hash_to_curve.c
│   ├── kex.c
│   ├── random/
│   │   ├── random.c
│   │   └── random.h
│   ├── schnorrq.c
│   ├── sha512/
│   │   ├── sha512.c
│   │   └── sha512.h
│   ├── table_lookup.h
│   └── tests/
│       ├── crypto_tests.c
│       ├── ecc_tests.c
│       ├── fp_tests.c
│       ├── test_extras.c
│       └── test_extras.h
├── mpc4j-native-tool/
│   ├── CMakeLists.txt
│   ├── README.md
│   ├── bit_matrix_trans/
│   │   ├── bit_matrix_trans.h
│   │   ├── edu_alibaba_mpc4j_common_tool_bitmatrix_trans_NativeTransBitMatrix.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_bitmatrix_trans_NativeTransBitMatrix.h
│   ├── common/
│   │   ├── block.h
│   │   ├── defines.cpp
│   │   ├── defines.h
│   │   ├── sse2neon.h
│   │   └── stdc++.h
│   ├── crypto/
│   │   ├── aes.h
│   │   ├── blake2/
│   │   │   ├── COPYING
│   │   │   ├── neon/
│   │   │   │   ├── blake2-impl.h
│   │   │   │   ├── blake2.h
│   │   │   │   ├── blake2b-load-neon.h
│   │   │   │   ├── blake2b-neon.c
│   │   │   │   ├── blake2b-round.h
│   │   │   │   ├── blake2bp.c
│   │   │   │   ├── blake2s-load-neon.h
│   │   │   │   ├── blake2s-neon.c
│   │   │   │   ├── blake2s-round.h
│   │   │   │   ├── blake2sp.c
│   │   │   │   ├── blake2xb.c
│   │   │   │   ├── blake2xs.c
│   │   │   │   └── genkat-c.c
│   │   │   └── sse/
│   │   │       ├── blake2-config.h
│   │   │       ├── blake2-impl.h
│   │   │       ├── blake2.c
│   │   │       ├── blake2.h
│   │   │       ├── blake2b-load-sse2.h
│   │   │       ├── blake2b-load-sse41.h
│   │   │       ├── blake2b-round.h
│   │   │       ├── blake2bp.c
│   │   │       └── blake2xb.c
│   │   ├── blake2b_hash.h
│   │   ├── blake2b_kdf.h
│   │   ├── blake3/
│   │   │   ├── blake3.c
│   │   │   ├── blake3.h
│   │   │   ├── blake3_avx2_x86-64_unix.S
│   │   │   ├── blake3_avx512_x86-64_unix.S
│   │   │   ├── blake3_dispatch.c
│   │   │   ├── blake3_impl.h
│   │   │   ├── blake3_neon.c
│   │   │   ├── blake3_portable.c
│   │   │   ├── blake3_sse2_x86-64_unix.S
│   │   │   └── blake3_sse41_x86-64_unix.S
│   │   ├── blake3_hash.h
│   │   ├── blake3_kdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake2b160Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake2b160Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake3Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake3Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeSha256Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeSha256Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake2bKdf.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake2bKdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake3Kdf.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake3Kdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_prp_NativeAesPrp.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_prp_NativeAesPrp.h
│   │   └── sha256_hash.h
│   ├── doc/
│   │   ├── compile_centos_x86_64.md
│   │   ├── compile_mac_aarch64.md
│   │   ├── compile_mac_x86_64.md
│   │   └── compile_ubuntu.md
│   ├── ecc_fourq/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_fourq_FourqByteFullEcc.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_crypto_ecc_fourq_FourqByteFullEcc.h
│   ├── ecc_openssl/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256k1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256k1OpensslNativeEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256r1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256r1OpensslNativeEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_Sm2P256v1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_Sm2P256v1OpensslNativeEcc.h
│   │   ├── openssl_bit_iterator.hpp
│   │   ├── openssl_ecc.cpp
│   │   ├── openssl_ecc.h
│   │   └── openssl_window_method.hpp
│   ├── ecc_sodium/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_Ed25519SodiumByteFullEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_Ed25519SodiumByteFullEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_X25519SodiumByteMulEcc.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_X25519SodiumByteMulEcc.h
│   ├── gf2e/
│   │   ├── edu_alibaba_mpc4j_common_tool_galoisfield_gf2e_NtlNativeGf2e.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_galoisfield_gf2e_NtlNativeGf2e.h
│   ├── network/
│   │   ├── benes_network.hpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_benes_NativeBenesNetwork.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_benes_NativeBenesNetwork.h
│   │   ├── edu_alibaba_mpc4j_common_tool_network_waksman_NativeWaksmanNetwork.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_waksman_NativeWaksmanNetwork.h
│   │   └── waksman_network.hpp
│   ├── ntl_poly/
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_gf2e_NtlNativeGf2ePoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_gf2e_NtlNativeGf2ePoly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp64_NtlZp64Poly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp64_NtlZp64Poly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlTreeZpPoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlTreeZpPoly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlZpPoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlZpPoly.h
│   │   ├── ntl_gf2x.cpp
│   │   ├── ntl_gf2x.h
│   │   ├── ntl_tree_zp.cpp
│   │   ├── ntl_tree_zp.h
│   │   ├── ntl_zp.cpp
│   │   ├── ntl_zp.h
│   │   ├── ntl_zp64.cpp
│   │   ├── ntl_zp64.h
│   │   ├── ntl_zp_util.cpp
│   │   └── ntl_zp_util.h
│   └── ntl_sgf2k/
│       ├── edu_alibaba_mpc4j_common_tool_galoisfield_sgf2k_NtlSubSgf2k.cpp
│       ├── edu_alibaba_mpc4j_common_tool_galoisfield_sgf2k_NtlSubSgf2k.h
│       ├── ntl_sgf2k_utils.cpp
│       └── ntl_sgf2k_utils.h
├── mpc4j-s2pc-aby/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── s2pc/
│       │                       └── aby/
│       │                           ├── basics/
│       │                           │   ├── z2/
│       │                           │   │   ├── AbstractZ2cParty.java
│       │                           │   │   ├── SquareZ2Vector.java
│       │                           │   │   ├── Z2cConfig.java
│       │                           │   │   ├── Z2cFactory.java
│       │                           │   │   ├── Z2cParty.java
│       │                           │   │   ├── bea91/
│       │                           │   │   │   ├── Bea91Z2cConfig.java
│       │                           │   │   │   ├── Bea91Z2cPtoDesc.java
│       │                           │   │   │   ├── Bea91Z2cReceiver.java
│       │                           │   │   │   └── Bea91Z2cSender.java
│       │                           │   │   └── rrg21/
│       │                           │   │       ├── Rrg21Z2cConfig.java
│       │                           │   │       ├── Rrg21Z2cPtoDesc.java
│       │                           │   │       ├── Rrg21Z2cReceiver.java
│       │                           │   │       └── Rrg21Z2cSender.java
│       │                           │   ├── zl/
│       │                           │   │   ├── AbstractZlcParty.java
│       │                           │   │   ├── SquareZlVector.java
│       │                           │   │   ├── ZlcConfig.java
│       │                           │   │   ├── ZlcFactory.java
│       │                           │   │   ├── ZlcParty.java
│       │                           │   │   └── bea91/
│       │                           │   │       ├── Bea91ZlcConfig.java
│       │                           │   │       ├── Bea91ZlcPtoDesc.java
│       │                           │   │       ├── Bea91ZlcReceiver.java
│       │                           │   │       └── Bea91ZlcSender.java
│       │                           │   └── zl64/
│       │                           │       ├── AbstractZl64cParty.java
│       │                           │       ├── SquareZl64Vector.java
│       │                           │       ├── Zl64cConfig.java
│       │                           │       ├── Zl64cFactory.java
│       │                           │       ├── Zl64cParty.java
│       │                           │       └── bea91/
│       │                           │           ├── Bea91Zl64cConfig.java
│       │                           │           ├── Bea91Zl64cPtoDesc.java
│       │                           │           ├── Bea91Zl64cReceiver.java
│       │                           │           └── Bea91Zl64cSender.java
│       │                           ├── edit/
│       │                           │   ├── AbstractEditDistReceiver.java
│       │                           │   ├── AbstractEditDistSender.java
│       │                           │   ├── DistCmpConfig.java
│       │                           │   ├── DistCmpReceiver.java
│       │                           │   ├── DistCmpSender.java
│       │                           │   ├── EditDistFactory.java
│       │                           │   ├── EditUtils.java
│       │                           │   └── s2pc/
│       │                           │       └── diag/
│       │                           │           ├── S2pcDiagEditDistConfig.java
│       │                           │           ├── S2pcDiagEditDistPtoDesc.java
│       │                           │           ├── S2pcDiagEditDistReceiver.java
│       │                           │           └── S2pcDiagEditDistSender.java
│       │                           ├── main/
│       │                           │   ├── AbyMain.java
│       │                           │   └── osn/
│       │                           │       ├── RosnConfigUtils.java
│       │                           │       └── RosnMain.java
│       │                           ├── operator/
│       │                           │   ├── agg/
│       │                           │   │   ├── hamming/
│       │                           │   │   │   ├── AbstractHammingParty.java
│       │                           │   │   │   ├── HammingConfig.java
│       │                           │   │   │   ├── HammingFactory.java
│       │                           │   │   │   ├── HammingParty.java
│       │                           │   │   │   └── bcp13/
│       │                           │   │   │       ├── Bcp13ShHammingConfig.java
│       │                           │   │   │       ├── Bcp13ShHammingPtoDesc.java
│       │                           │   │   │       ├── Bcp13ShHammingReceiver.java
│       │                           │   │   │       └── Bcp13ShHammingSender.java
│       │                           │   │   └── max/
│       │                           │   │       └── zl/
│       │                           │   │           ├── AbstractZlMaxParty.java
│       │                           │   │           ├── ZlMaxConfig.java
│       │                           │   │           ├── ZlMaxFactory.java
│       │                           │   │           ├── ZlMaxParty.java
│       │                           │   │           └── rrk20/
│       │                           │   │               ├── Rrk20ZlMaxConfig.java
│       │                           │   │               ├── Rrk20ZlMaxPtoDesc.java
│       │                           │   │               ├── Rrk20ZlMaxReceiver.java
│       │                           │   │               └── Rrk20ZlMaxSender.java
│       │                           │   ├── corr/
│       │                           │   │   └── zl/
│       │                           │   │       ├── AbstractZlCorrParty.java
│       │                           │   │       ├── ZlCorrConfig.java
│       │                           │   │       ├── ZlCorrFactory.java
│       │                           │   │       ├── ZlCorrParty.java
│       │                           │   │       ├── gp23/
│       │                           │   │       │   ├── Gp23ZlCorrConfig.java
│       │                           │   │       │   ├── Gp23ZlCorrPtoDesc.java
│       │                           │   │       │   ├── Gp23ZlCorrReceiver.java
│       │                           │   │       │   └── Gp23ZlCorrSender.java
│       │                           │   │       └── rrk20/
│       │                           │   │           ├── Rrk20ZlCorrConfig.java
│       │                           │   │           ├── Rrk20ZlCorrPtoDesc.java
│       │                           │   │           ├── Rrk20ZlCorrReceiver.java
│       │                           │   │           └── Rrk20ZlCorrSender.java
│       │                           │   └── row/
│       │                           │       ├── b2a/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlB2aParty.java
│       │                           │       │       ├── ZlB2aConfig.java
│       │                           │       │       ├── ZlB2aFactory.java
│       │                           │       │       ├── ZlB2aParty.java
│       │                           │       │       └── rrkc20/
│       │                           │       │           ├── Rrkc20ZlB2aConfig.java
│       │                           │       │           ├── Rrkc20ZlB2aPtoDesc.java
│       │                           │       │           ├── Rrkc20ZlB2aReceiver.java
│       │                           │       │           └── Rrkc20ZlB2aSender.java
│       │                           │       ├── crossTerm/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlCrossTermReceiver.java
│       │                           │       │       ├── AbstractZlCrossTermSender.java
│       │                           │       │       ├── ZlCrossTermConfig.java
│       │                           │       │       ├── ZlCrossTermFactory.java
│       │                           │       │       ├── ZlCrossTermParty.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlCrossTermConfig.java
│       │                           │       │           ├── Rrgg21ZlCrossTermPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlCrossTermReceiver.java
│       │                           │       │           └── Rrgg21ZlCrossTermSender.java
│       │                           │       ├── drelu/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlDreluParty.java
│       │                           │       │       ├── ZlDreluConfig.java
│       │                           │       │       ├── ZlDreluFactory.java
│       │                           │       │       ├── ZlDreluParty.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlDreluConfig.java
│       │                           │       │           ├── Rrk20ZlDreluPtoDesc.java
│       │                           │       │           ├── Rrk20ZlDreluReceiver.java
│       │                           │       │           └── Rrk20ZlDreluSender.java
│       │                           │       ├── extension/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlExtensionParty.java
│       │                           │       │       ├── ZlExtensionConfig.java
│       │                           │       │       ├── ZlExtensionFactory.java
│       │                           │       │       ├── ZlExtensionParty.java
│       │                           │       │       ├── g24/
│       │                           │       │       │   ├── G24ZlExtensionConfig.java
│       │                           │       │       │   ├── G24ZlExtensionPtoDesc.java
│       │                           │       │       │   ├── G24ZlExtensionReceiver.java
│       │                           │       │       │   └── G24ZlExtensionSender.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlExtensionConfig.java
│       │                           │       │           ├── Rrgg21ZlExtensionPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlExtensionReceiver.java
│       │                           │       │           └── Rrgg21ZlExtensionSender.java
│       │                           │       ├── lut/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlLutReceiver.java
│       │                           │       │       ├── AbstractZlLutSender.java
│       │                           │       │       ├── ZlLutConfig.java
│       │                           │       │       ├── ZlLutFactory.java
│       │                           │       │       ├── ZlLutReceiver.java
│       │                           │       │       ├── ZlLutSender.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlLutConfig.java
│       │                           │       │           ├── Rrgg21ZlLutPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlLutReceiver.java
│       │                           │       │           └── Rrgg21ZlLutSender.java
│       │                           │       ├── matCrossTerm/
│       │                           │       │   ├── AbstractZlMatCrossTermReceiver.java
│       │                           │       │   ├── AbstractZlMatCrossTermSender.java
│       │                           │       │   ├── ZlMatCrossTermConfig.java
│       │                           │       │   ├── ZlMatCrossTermFactory.java
│       │                           │       │   ├── ZlMatCrossTermParty.java
│       │                           │       │   └── rrgg21/
│       │                           │       │       ├── Rrgg21ZlMatCrossTermConfig.java
│       │                           │       │       ├── Rrgg21ZlMatCrossTermPtoDesc.java
│       │                           │       │       ├── Rrgg21ZlMatCrossTermReceiver.java
│       │                           │       │       └── Rrgg21ZlMatCrossTermSender.java
│       │                           │       ├── max2/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMax2Party.java
│       │                           │       │       ├── ZlMax2Config.java
│       │                           │       │       ├── ZlMax2Factory.java
│       │                           │       │       ├── ZlMax2Party.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMax2Config.java
│       │                           │       │           ├── Rrk20ZlMax2PtoDesc.java
│       │                           │       │           ├── Rrk20ZlMax2Receiver.java
│       │                           │       │           └── Rrk20ZlMax2Sender.java
│       │                           │       ├── millionaire/
│       │                           │       │   ├── AbstractMillionaireParty.java
│       │                           │       │   ├── MillionaireConfig.java
│       │                           │       │   ├── MillionaireFactory.java
│       │                           │       │   ├── MillionaireParty.java
│       │                           │       │   └── rrk20/
│       │                           │       │       ├── Rrk20MillionaireConfig.java
│       │                           │       │       ├── Rrk20MillionairePtoDesc.java
│       │                           │       │       ├── Rrk20MillionaireReceiver.java
│       │                           │       │       ├── Rrk20MillionaireSender.java
│       │                           │       │       └── Rrk20MillionaireUtils.java
│       │                           │       ├── min2/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMin2Party.java
│       │                           │       │       ├── ZlMin2Config.java
│       │                           │       │       ├── ZlMin2Factory.java
│       │                           │       │       ├── ZlMin2Party.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMin2Config.java
│       │                           │       │           ├── Rrk20ZlMin2PtoDesc.java
│       │                           │       │           ├── Rrk20ZlMin2Receiver.java
│       │                           │       │           └── Rrk20ZlMin2Sender.java
│       │                           │       ├── mux/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMuxParty.java
│       │                           │       │       ├── ZlMuxConfig.java
│       │                           │       │       ├── ZlMuxFactory.java
│       │                           │       │       ├── ZlMuxParty.java
│       │                           │       │       ├── rrg21/
│       │                           │       │       │   ├── Rrg21ZlMuxConfig.java
│       │                           │       │       │   ├── Rrg21ZlMuxPtoDesc.java
│       │                           │       │       │   ├── Rrg21ZlMuxReceiver.java
│       │                           │       │       │   └── Rrg21ZlMuxSender.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMuxConfig.java
│       │                           │       │           ├── Rrk20ZlMuxPtoDesc.java
│       │                           │       │           ├── Rrk20ZlMuxReceiver.java
│       │                           │       │           └── Rrk20ZlMuxSender.java
│       │                           │       ├── peqt/
│       │                           │       │   ├── AbstractPeqtParty.java
│       │                           │       │   ├── PeqtConfig.java
│       │                           │       │   ├── PeqtFactory.java
│       │                           │       │   ├── PeqtParty.java
│       │                           │       │   ├── cgs22/
│       │                           │       │   │   ├── Cgs22PeqtConfig.java
│       │                           │       │   │   ├── Cgs22PeqtPtoDesc.java
│       │                           │       │   │   ├── Cgs22PeqtReceiver.java
│       │                           │       │   │   ├── Cgs22PeqtSender.java
│       │                           │       │   │   └── Cgs22PeqtUtils.java
│       │                           │       │   └── naive/
│       │                           │       │       ├── NaivePeqtConfig.java
│       │                           │       │       ├── NaivePeqtPtoDesc.java
│       │                           │       │       ├── NaivePeqtReceiver.java
│       │                           │       │       └── NaivePeqtSender.java
│       │                           │       ├── trunc/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlTruncParty.java
│       │                           │       │       ├── ZlTruncConfig.java
│       │                           │       │       ├── ZlTruncFactory.java
│       │                           │       │       ├── ZlTruncParty.java
│       │                           │       │       ├── gp23/
│       │                           │       │       │   ├── Gp23ZlTruncConfig.java
│       │                           │       │       │   ├── Gp23ZlTruncPtoDesc.java
│       │                           │       │       │   ├── Gp23ZlTruncReceiver.java
│       │                           │       │       │   └── Gp23ZlTruncSender.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlTruncConfig.java
│       │                           │       │           ├── Rrk20ZlTruncPtoDesc.java
│       │                           │       │           ├── Rrk20ZlTruncReceiver.java
│       │                           │       │           └── Rrk20ZlTruncSender.java
│       │                           │       └── wrap/
│       │                           │           └── zl/
│       │                           │               ├── AbstractZlWrapParty.java
│       │                           │               ├── ZlWrapConfig.java
│       │                           │               ├── ZlWrapFactory.java
│       │                           │               ├── ZlWrapParty.java
│       │                           │               └── rrkc20/
│       │                           │                   ├── Rrkc20ZlWrapConfig.java
│       │                           │                   ├── Rrkc20ZlWrapPtoDesc.java
│       │                           │                   ├── Rrkc20ZlWrapReceiver.java
│       │                           │                   └── Rrkc20ZlWrapSender.java
│       │                           └── pcg/
│       │                               ├── TrustDealer.java
│       │                               ├── TrustDealerConfig.java
│       │                               ├── TrustDealerPtoDesc.java
│       │                               ├── TrustDealerPtoStep.java
│       │                               ├── TrustDealerThread.java
│       │                               ├── dabit/
│       │                               │   ├── ZlDaBitTuple.java
│       │                               │   └── zl/
│       │                               │       ├── AbstractZlDaBitGenParty.java
│       │                               │       ├── ZlDaBitGenConfig.java
│       │                               │       ├── ZlDaBitGenFactory.java
│       │                               │       ├── ZlDaBitGenParty.java
│       │                               │       ├── lkz24/
│       │                               │       │   ├── Lkz24ZlDaBitGenConfig.java
│       │                               │       │   ├── Lkz24ZlDaBitGenPtoDesc.java
│       │                               │       │   ├── Lzk24ZlDaBitGenReceiver.java
│       │                               │       │   └── Lzk24ZlDaBitGenSender.java
│       │                               │       └── plg24/
│       │                               │           ├── Plg24ZlDaBitGenConfig.java
│       │                               │           ├── Plg24ZlDaBitGenPtoDesc.java
│       │                               │           ├── Plg24ZlDaBitGenReceiver.java
│       │                               │           └── Plg24ZlDaBitGenSender.java
│       │                               ├── osn/
│       │                               │   ├── dosn/
│       │                               │   │   ├── AbstractDosnReceiver.java
│       │                               │   │   ├── AbstractDosnSender.java
│       │                               │   │   ├── DosnConfig.java
│       │                               │   │   ├── DosnFactory.java
│       │                               │   │   ├── DosnPartyOutput.java
│       │                               │   │   ├── DosnReceiver.java
│       │                               │   │   ├── DosnSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24DosnConfig.java
│       │                               │   │       ├── Lll24DosnPtoDesc.java
│       │                               │   │       ├── Lll24DosnReceiver.java
│       │                               │   │       └── Lll24DosnSender.java
│       │                               │   ├── posn/
│       │                               │   │   ├── AbstractPosnReceiver.java
│       │                               │   │   ├── AbstractPosnSender.java
│       │                               │   │   ├── PosnConfig.java
│       │                               │   │   ├── PosnFactory.java
│       │                               │   │   ├── PosnReceiver.java
│       │                               │   │   ├── PosnSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24PosnConfig.java
│       │                               │   │       ├── Lll24PosnPtoDesc.java
│       │                               │   │       ├── Lll24PosnReceiver.java
│       │                               │   │       └── Lll24PosnSender.java
│       │                               │   └── rosn/
│       │                               │       ├── AbstractCstRosnReceiver.java
│       │                               │       ├── AbstractCstRosnSender.java
│       │                               │       ├── AbstractNetRosnReceiver.java
│       │                               │       ├── AbstractNetRosnSender.java
│       │                               │       ├── AbstractRosnReceiver.java
│       │                               │       ├── AbstractRosnSender.java
│       │                               │       ├── CstRosnConfig.java
│       │                               │       ├── CstRosnPtoStep.java
│       │                               │       ├── CstRosnReceiver.java
│       │                               │       ├── CstRosnSender.java
│       │                               │       ├── NetRosnConfig.java
│       │                               │       ├── RosnConfig.java
│       │                               │       ├── RosnFactory.java
│       │                               │       ├── RosnReceiver.java
│       │                               │       ├── RosnReceiverOutput.java
│       │                               │       ├── RosnSender.java
│       │                               │       ├── RosnSenderOutput.java
│       │                               │       ├── cgp20/
│       │                               │       │   ├── Cgp20CstRosnConfig.java
│       │                               │       │   ├── Cgp20CstRosnPtoDesc.java
│       │                               │       │   ├── Cgp20CstRosnReceiver.java
│       │                               │       │   └── Cgp20CstRosnSender.java
│       │                               │       ├── gmr21/
│       │                               │       │   ├── Gmr21FlatNetRosnConfig.java
│       │                               │       │   ├── Gmr21FlatNetRosnPtoDesc.java
│       │                               │       │   ├── Gmr21FlatNetRosnReceiver.java
│       │                               │       │   ├── Gmr21FlatNetRosnSender.java
│       │                               │       │   ├── Gmr21NetRosnConfig.java
│       │                               │       │   ├── Gmr21NetRosnPtoDesc.java
│       │                               │       │   ├── Gmr21NetRosnReceiver.java
│       │                               │       │   └── Gmr21NetRosnSender.java
│       │                               │       ├── lll24/
│       │                               │       │   ├── Lll24CstRosnConfig.java
│       │                               │       │   ├── Lll24CstRosnPtoDesc.java
│       │                               │       │   ├── Lll24CstRosnReceiver.java
│       │                               │       │   ├── Lll24CstRosnSender.java
│       │                               │       │   ├── Lll24FlatNetRosnConfig.java
│       │                               │       │   ├── Lll24FlatNetRosnPtoDesc.java
│       │                               │       │   ├── Lll24FlatNetRosnReceiver.java
│       │                               │       │   ├── Lll24FlatNetRosnSender.java
│       │                               │       │   ├── Lll24NetRosnConfig.java
│       │                               │       │   ├── Lll24NetRosnPtoDesc.java
│       │                               │       │   ├── Lll24NetRosnReceiver.java
│       │                               │       │   └── Lll24NetRosnSender.java
│       │                               │       ├── ms13/
│       │                               │       │   ├── Ms13NetRosnConfig.java
│       │                               │       │   ├── Ms13NetRosnPtoDesc.java
│       │                               │       │   ├── Ms13NetRosnReceiver.java
│       │                               │       │   └── Ms13NetRosnSender.java
│       │                               │       └── prrs24/
│       │                               │           ├── Prrs24OprfRosnConfig.java
│       │                               │           ├── Prrs24OprfRosnPtoDesc.java
│       │                               │           ├── Prrs24OprfRosnReceiver.java
│       │                               │           └── Prrs24OprfRosnSender.java
│       │                               ├── sowoprf/
│       │                               │   ├── AbstractF23SowOprfReceiver.java
│       │                               │   ├── AbstractF23SowOprfSender.java
│       │                               │   ├── AbstractF32SowOprfReceiver.java
│       │                               │   ├── AbstractF32SowOprfSender.java
│       │                               │   ├── F23SowOprfConfig.java
│       │                               │   ├── F23SowOprfFactory.java
│       │                               │   ├── F23SowOprfReceiver.java
│       │                               │   ├── F23SowOprfSender.java
│       │                               │   ├── F23Wprf.java
│       │                               │   ├── F23WprfByteMatrix.java
│       │                               │   ├── F23WprfLongMatrix.java
│       │                               │   ├── F23WprfMatrix.java
│       │                               │   ├── F23WprfMatrixFactory.java
│       │                               │   ├── F23WprfNaiveMatrix.java
│       │                               │   ├── F32SowOprfConfig.java
│       │                               │   ├── F32SowOprfFactory.java
│       │                               │   ├── F32SowOprfReceiver.java
│       │                               │   ├── F32SowOprfSender.java
│       │                               │   ├── F32Wprf.java
│       │                               │   ├── F32WprfByteMatrix.java
│       │                               │   ├── F32WprfLongMatrix.java
│       │                               │   ├── F32WprfMatrix.java
│       │                               │   ├── F32WprfMatrixFactory.java
│       │                               │   ├── F32WprfNaiveMatrix.java
│       │                               │   └── aprr24/
│       │                               │       ├── Aprr24F23SowOprfConfig.java
│       │                               │       ├── Aprr24F23SowOprfPtoDesc.java
│       │                               │       ├── Aprr24F23SowOprfReceiver.java
│       │                               │       ├── Aprr24F23SowOprfSender.java
│       │                               │       ├── Aprr24F32SowOprfConfig.java
│       │                               │       ├── Aprr24F32SowOprfPtoDesc.java
│       │                               │       ├── Aprr24F32SowOprfReceiver.java
│       │                               │       └── Aprr24F32SowOprfSender.java
│       │                               ├── st/
│       │                               │   ├── bst/
│       │                               │   │   ├── AbstractBstReceiver.java
│       │                               │   │   ├── AbstractBstSender.java
│       │                               │   │   ├── BstConfig.java
│       │                               │   │   ├── BstFactory.java
│       │                               │   │   ├── BstReceiver.java
│       │                               │   │   ├── BstReceiverOutput.java
│       │                               │   │   ├── BstSender.java
│       │                               │   │   ├── BstSenderOutput.java
│       │                               │   │   ├── cgp20/
│       │                               │   │   │   ├── Cgp20BstConfig.java
│       │                               │   │   │   ├── Cgp20BstPtoDesc.java
│       │                               │   │   │   ├── Cgp20BstReceiver.java
│       │                               │   │   │   └── Cgp20BstSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24BstConfig.java
│       │                               │   │       ├── Lll24BstPtoDesc.java
│       │                               │   │       ├── Lll24BstReceiver.java
│       │                               │   │       └── Lll24BstSender.java
│       │                               │   ├── pst/
│       │                               │   │   ├── AbstractPstReceiver.java
│       │                               │   │   ├── AbstractPstSender.java
│       │                               │   │   ├── PstConfig.java
│       │                               │   │   ├── PstFactory.java
│       │                               │   │   ├── PstReceiver.java
│       │                               │   │   ├── PstSender.java
│       │                               │   │   ├── cgp20/
│       │                               │   │   │   ├── Cgp20PstConfig.java
│       │                               │   │   │   ├── Cgp20PstPtoDesc.java
│       │                               │   │   │   ├── Cgp20PstReceiver.java
│       │                               │   │   │   └── Cgp20PstSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24PstConfig.java
│       │                               │   │       ├── Lll24PstPtoDesc.java
│       │                               │   │       ├── Lll24PstReceiver.java
│       │                               │   │       └── Lll24PstSender.java
│       │                               │   └── sst/
│       │                               │       ├── AbstractSstReceiver.java
│       │                               │       ├── AbstractSstSender.java
│       │                               │       ├── SstConfig.java
│       │                               │       ├── SstFactory.java
│       │                               │       ├── SstReceiver.java
│       │                               │       ├── SstReceiverOutput.java
│       │                               │       ├── SstSender.java
│       │                               │       ├── SstSenderOutput.java
│       │                               │       ├── cgp20/
│       │                               │       │   ├── Cgp20SstConfig.java
│       │                               │       │   ├── Cgp20SstPtoDesc.java
│       │                               │       │   ├── Cgp20SstReceiver.java
│       │                               │       │   └── Cgp20SstSender.java
│       │                               │       └── lll24/
│       │                               │           ├── Lll24SstConfig.java
│       │                               │           ├── Lll24SstPtoDesc.java
│       │                               │           ├── Lll24SstReceiver.java
│       │                               │           └── Lll24SstSender.java
│       │                               └── triple/
│       │                                   ├── Z2Triple.java
│       │                                   ├── Zl64Triple.java
│       │                                   ├── ZlTriple.java
│       │                                   ├── Zp64Triple.java
│       │                                   ├── z2/
│       │                                   │   ├── AbstractZ2TripleGenParty.java
│       │                                   │   ├── Z2TripleGenConfig.java
│       │                                   │   ├── Z2TripleGenFactory.java
│       │                                   │   ├── Z2TripleGenParty.java
│       │                                   │   ├── aided/
│       │                                   │   │   ├── AidedZ2TripleGenConfig.java
│       │                                   │   │   └── AidedZ2TripleGenParty.java
│       │                                   │   ├── direct/
│       │                                   │   │   ├── DirectZ2TripleGenConfig.java
│       │                                   │   │   ├── DirectZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── DirectZ2TripleGenReceiver.java
│       │                                   │   │   └── DirectZ2TripleGenSender.java
│       │                                   │   ├── fake/
│       │                                   │   │   ├── FakeZ2TripleGenConfig.java
│       │                                   │   │   ├── FakeZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── FakeZ2TripleGenReceiver.java
│       │                                   │   │   └── FakeZ2TripleGenSender.java
│       │                                   │   ├── lcot/
│       │                                   │   │   ├── LcotZ2TripleGenConfig.java
│       │                                   │   │   ├── LcotZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── LcotZ2TripleGenReceiver.java
│       │                                   │   │   └── LcotZ2TripleGenSender.java
│       │                                   │   └── silent/
│       │                                   │       ├── SilentZ2TripleGenConfig.java
│       │                                   │       ├── SilentZ2TripleGenPtoDesc.java
│       │                                   │       ├── SilentZ2TripleGenReceiver.java
│       │                                   │       └── SilentZ2TripleGenSender.java
│       │                                   ├── zl/
│       │                                   │   ├── AbstractZlTripleGenParty.java
│       │                                   │   ├── ZlTripleGenConfig.java
│       │                                   │   ├── ZlTripleGenFactory.java
│       │                                   │   ├── ZlTripleGenParty.java
│       │                                   │   ├── aided/
│       │                                   │   │   ├── AidedZlTripleGenConfig.java
│       │                                   │   │   └── AidedZlTripleGenParty.java
│       │                                   │   ├── direct/
│       │                                   │   │   ├── DirectZlTripleGenConfig.java
│       │                                   │   │   ├── DirectZlTripleGenPtoDesc.java
│       │                                   │   │   ├── DirectZlTripleGenReceiver.java
│       │                                   │   │   └── DirectZlTripleGenSender.java
│       │                                   │   ├── fake/
│       │                                   │   │   ├── FakeZlTripleGenConfig.java
│       │                                   │   │   ├── FakeZlTripleGenPtoDesc.java
│       │                                   │   │   ├── FakeZlTripleGenReceiver.java
│       │                                   │   │   └── FakeZlTripleGenSender.java
│       │                                   │   └── silent/
│       │                                   │       ├── SilentZlTripleGenConfig.java
│       │                                   │       ├── SilentZlTripleGenPtoDesc.java
│       │                                   │       ├── SilentZlTripleGenReceiver.java
│       │                                   │       └── SilentZlTripleGenSender.java
│       │                                   └── zl64/
│       │                                       ├── AbstractZl64TripleGenParty.java
│       │                                       ├── Zl64TripleGenConfig.java
│       │                                       ├── Zl64TripleGenFactory.java
│       │                                       ├── Zl64TripleGenParty.java
│       │                                       ├── aided/
│       │                                       │   ├── AidedZl64TripleGenConfig.java
│       │                                       │   └── AidedZl64TripleGenParty.java
│       │                                       ├── direct/
│       │                                       │   ├── DirectZl64TripleGenConfig.java
│       │                                       │   ├── DirectZl64TripleGenPtoDesc.java
│       │                                       │   ├── DirectZl64TripleGenReceiver.java
│       │                                       │   └── DirectZl64TripleGenSender.java
│       │                                       ├── fake/
│       │                                       │   ├── FakeZl64TripleGenConfig.java
│       │                                       │   ├── FakeZl64TripleGenPtoDesc.java
│       │                                       │   ├── FakeZl64TripleGenReceiver.java
│       │                                       │   └── FakeZl64TripleGenSender.java
│       │                                       └── silent/
│       │                                           ├── SilentZl64TripleGenConfig.java
│       │                                           ├── SilentZl64TripleGenPtoDesc.java
│       │                                           ├── SilentZl64TripleGenReceiver.java
│       │                                           └── SilentZl64TripleGenSender.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── s2pc/
│           │                   └── aby/
│           │                       ├── basics/
│           │                       │   ├── z2/
│           │                       │   │   ├── BatchDyadicZ2cReceiverThread.java
│           │                       │   │   ├── BatchDyadicZ2cSenderThread.java
│           │                       │   │   ├── BatchUnaryZ2cReceiverThread.java
│           │                       │   │   ├── BatchUnaryZ2cSenderThread.java
│           │                       │   │   ├── BatchZ2cTest.java
│           │                       │   │   ├── SingleDyadicZ2cReceiverThread.java
│           │                       │   │   ├── SingleDyadicZ2cSenderThread.java
│           │                       │   │   ├── SingleUnaryZ2cReceiverThread.java
│           │                       │   │   ├── SingleUnaryZ2cSenderThread.java
│           │                       │   │   ├── SingleZ2cTest.java
│           │                       │   │   ├── UnbalancedAndZ2cReceiverThread.java
│           │                       │   │   ├── UnbalancedAndZ2cSenderThread.java
│           │                       │   │   └── Z2cUnbalancedAndTest.java
│           │                       │   ├── zl/
│           │                       │   │   ├── BatchDyadicZlcReceiverThread.java
│           │                       │   │   ├── BatchDyadicZlcSenderThread.java
│           │                       │   │   ├── BatchUnaryZlcReceiverThread.java
│           │                       │   │   ├── BatchUnaryZlcSenderThread.java
│           │                       │   │   ├── BatchZlcTest.java
│           │                       │   │   ├── SingleDyadicZlcReceiverThread.java
│           │                       │   │   ├── SingleDyadicZlcSenderThread.java
│           │                       │   │   ├── SingleUnaryZlcReceiverThread.java
│           │                       │   │   ├── SingleUnaryZlcSenderThread.java
│           │                       │   │   └── SingleZlcTest.java
│           │                       │   └── zl64/
│           │                       │       ├── BatchDyadicZl64cReceiverThread.java
│           │                       │       ├── BatchDyadicZl64cSenderThread.java
│           │                       │       ├── BatchUnaryZl64cReceiverThread.java
│           │                       │       ├── BatchUnaryZl64cSenderThread.java
│           │                       │       ├── BatchZl64cTest.java
│           │                       │       ├── SingleDyadicZl64cReceiverThread.java
│           │                       │       ├── SingleDyadicZl64cSenderThread.java
│           │                       │       ├── SingleUnaryZl64cReceiverThread.java
│           │                       │       ├── SingleUnaryZl64cSenderThread.java
│           │                       │       └── SingleZl64cTest.java
│           │                       ├── edit/
│           │                       │   ├── EditDistEfficiencyTest.java
│           │                       │   ├── EditDistReceiverThread.java
│           │                       │   ├── EditDistSenderThread.java
│           │                       │   └── EditDistTest.java
│           │                       ├── main/
│           │                       │   └── RosnMainTest.java
│           │                       ├── operator/
│           │                       │   ├── agg/
│           │                       │   │   ├── hamming/
│           │                       │   │   │   ├── HammingReceiverThread.java
│           │                       │   │   │   ├── HammingSenderThread.java
│           │                       │   │   │   └── HammingTest.java
│           │                       │   │   └── max/
│           │                       │   │       └── zl/
│           │                       │   │           ├── ZlMaxPartyThread.java
│           │                       │   │           └── ZlMaxTest.java
│           │                       │   ├── corr/
│           │                       │   │   ├── ZlCorrPartyThread.java
│           │                       │   │   └── ZlCorrTest.java
│           │                       │   └── row/
│           │                       │       ├── b2a/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlB2aPartyThread.java
│           │                       │       │       └── ZlB2aTest.java
│           │                       │       ├── crossTerm/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlCrossTermPartyThread.java
│           │                       │       │       └── ZlCrossTermTest.java
│           │                       │       ├── drelu/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlDreluPartyThread.java
│           │                       │       │       └── ZlDreluTest.java
│           │                       │       ├── extension/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlExtensionPartyThread.java
│           │                       │       │       └── ZlExtensionTest.java
│           │                       │       ├── lut/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlLutReceiverThread.java
│           │                       │       │       ├── ZlLutSenderThread.java
│           │                       │       │       └── ZlLutTest.java
│           │                       │       ├── matCrossTerm/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMatCrossTermPartyThread.java
│           │                       │       │       └── ZlMatCrossTermTest.java
│           │                       │       ├── max2/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMax2PartyThread.java
│           │                       │       │       └── ZlMax2Test.java
│           │                       │       ├── millionaire/
│           │                       │       │   ├── MillionairePartyThread.java
│           │                       │       │   ├── MillionaireTest.java
│           │                       │       │   └── MillionaireTestUtils.java
│           │                       │       ├── min2/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMin2PartyThread.java
│           │                       │       │       └── ZlMin2Test.java
│           │                       │       ├── mux/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMuxReceiverThread.java
│           │                       │       │       ├── ZlMuxSenderThread.java
│           │                       │       │       └── ZlMuxTest.java
│           │                       │       ├── peqt/
│           │                       │       │   ├── PeqtPartyThread.java
│           │                       │       │   ├── PeqtTest.java
│           │                       │       │   └── PeqtTestUtils.java
│           │                       │       ├── trunc/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlTruncPartyThread.java
│           │                       │       │       └── ZlTruncTest.java
│           │                       │       └── wrap/
│           │                       │           └── zl/
│           │                       │               ├── ZlWrapPartyThread.java
│           │                       │               └── ZlWrapTest.java
│           │                       └── pcg/
│           │                           ├── dabit/
│           │                           │   ├── DaBitTestUtils.java
│           │                           │   ├── ZlDaBitTupleTest.java
│           │                           │   └── zl/
│           │                           │       ├── ZlDaBitGenPartyThread.java
│           │                           │       └── ZlDaBitGenTest.java
│           │                           ├── osn/
│           │                           │   ├── OsnTestUtils.java
│           │                           │   ├── RosnPartyOutputTest.java
│           │                           │   ├── dosn/
│           │                           │   │   ├── DosnReceiverThread.java
│           │                           │   │   ├── DosnSenderThread.java
│           │                           │   │   └── DosnTest.java
│           │                           │   ├── posn/
│           │                           │   │   ├── PosnReceiverThread.java
│           │                           │   │   ├── PosnSenderThread.java
│           │                           │   │   └── PosnTest.java
│           │                           │   └── rosn/
│           │                           │       ├── RosnReceiverThread.java
│           │                           │       ├── RosnSenderThread.java
│           │                           │       └── RosnTest.java
│           │                           ├── sowoprf/
│           │                           │   ├── F23SowOprfReceiverThread.java
│           │                           │   ├── F23SowOprfSenderThread.java
│           │                           │   ├── F23SowOprfTest.java
│           │                           │   ├── F23WprfMatrixTest.java
│           │                           │   ├── F23WprfTest.java
│           │                           │   ├── F32SowOprfReceiverThread.java
│           │                           │   ├── F32SowOprfSenderThread.java
│           │                           │   ├── F32SowOprfTest.java
│           │                           │   ├── F32WprfMatrixTest.java
│           │                           │   ├── F32WprfTest.java
│           │                           │   └── WprfEfficiencyTest.java
│           │                           ├── st/
│           │                           │   ├── bst/
│           │                           │   │   ├── BstReceiverThread.java
│           │                           │   │   ├── BstSenderThread.java
│           │                           │   │   └── BstTest.java
│           │                           │   ├── pst/
│           │                           │   │   ├── PstReceiverThread.java
│           │                           │   │   ├── PstSenderThread.java
│           │                           │   │   └── PstTest.java
│           │                           │   └── sst/
│           │                           │       ├── SstReceiverThread.java
│           │                           │       ├── SstSenderThread.java
│           │                           │       └── SstTest.java
│           │                           └── triple/
│           │                               ├── TripleTestUtils.java
│           │                               ├── Z2TripleTest.java
│           │                               ├── Zl64TripleTest.java
│           │                               ├── ZlTripleTest.java
│           │                               ├── Zp64TripleTest.java
│           │                               ├── z2/
│           │                               │   ├── Z2TripleGenAidTest.java
│           │                               │   ├── Z2TripleGenPartyThread.java
│           │                               │   └── Z2TripleGenTest.java
│           │                               ├── zl/
│           │                               │   ├── ZlTripleGenAidTest.java
│           │                               │   ├── ZlTripleGenPartyThread.java
│           │                               │   └── ZlTripleGenTest.java
│           │                               └── zl64/
│           │                                   ├── Zl64TripleGenAidTest.java
│           │                                   ├── Zl64TripleGenPartyThread.java
│           │                                   └── Zl64TripleGenTest.java
│           └── resources/
│               ├── conf_rosn_example.conf
│               ├── log4j.properties
│               └── sim example.csv
├── mpc4j-s2pc-opf/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── s2pc/
│       │                       └── opf/
│       │                           ├── mqrpmt/
│       │                           │   ├── AbstractMqRpmtClient.java
│       │                           │   ├── AbstractMqRpmtServer.java
│       │                           │   ├── MqRpmtClient.java
│       │                           │   ├── MqRpmtConfig.java
│       │                           │   ├── MqRpmtFactory.java
│       │                           │   ├── MqRpmtServer.java
│       │                           │   ├── czz24/
│       │                           │   │   ├── Czz24CwOprfMqRpmtClient.java
│       │                           │   │   ├── Czz24CwOprfMqRpmtConfig.java
│       │                           │   │   ├── Czz24CwOprfMqRpmtPtoDesc.java
│       │                           │   │   └── Czz24CwOprfMqRpmtServer.java
│       │                           │   ├── gmr21/
│       │                           │   │   ├── Gmr21MqRpmtClient.java
│       │                           │   │   ├── Gmr21MqRpmtConfig.java
│       │                           │   │   ├── Gmr21MqRpmtPtoDesc.java
│       │                           │   │   └── Gmr21MqRpmtServer.java
│       │                           │   └── zcl23/
│       │                           │       ├── Zcl23PkeMqRpmtClient.java
│       │                           │       ├── Zcl23PkeMqRpmtConfig.java
│       │                           │       ├── Zcl23PkeMqRpmtPtoDesc.java
│       │                           │       └── Zcl23PkeMqRpmtServer.java
│       │                           ├── opprf/
│       │                           │   ├── batch/
│       │                           │   │   ├── AbstractBopprfReceiver.java
│       │                           │   │   ├── AbstractBopprfSender.java
│       │                           │   │   ├── BopprfConfig.java
│       │                           │   │   ├── BopprfFactory.java
│       │                           │   │   ├── BopprfReceiver.java
│       │                           │   │   ├── BopprfSender.java
│       │                           │   │   └── okvs/
│       │                           │   │       ├── OkvsBopprfConfig.java
│       │                           │   │       ├── OkvsBopprfPtoDesc.java
│       │                           │   │       ├── OkvsBopprfReceiver.java
│       │                           │   │       └── OkvsBopprfSender.java
│       │                           │   └── rb/
│       │                           │       ├── AbstractRbopprfReceiver.java
│       │                           │       ├── AbstractRbopprfSender.java
│       │                           │       ├── RbopprfConfig.java
│       │                           │       ├── RbopprfFactory.java
│       │                           │       ├── RbopprfReceiver.java
│       │                           │       ├── RbopprfSender.java
│       │                           │       └── cgs22/
│       │                           │           ├── Cgs22RbopprfConfig.java
│       │                           │           ├── Cgs22RbopprfPtoDesc.java
│       │                           │           ├── Cgs22RbopprfReceiver.java
│       │                           │           └── Cgs22RbopprfSender.java
│       │                           ├── oprf/
│       │                           │   ├── AbstractMpOprfReceiver.java
│       │                           │   ├── AbstractMpOprfSender.java
│       │                           │   ├── AbstractOprfReceiver.java
│       │                           │   ├── AbstractOprfSender.java
│       │                           │   ├── MpOprfConfig.java
│       │                           │   ├── MpOprfReceiver.java
│       │                           │   ├── MpOprfReceiverOutput.java
│       │                           │   ├── MpOprfSender.java
│       │                           │   ├── MpOprfSenderOutput.java
│       │                           │   ├── OprfConfig.java
│       │                           │   ├── OprfFactory.java
│       │                           │   ├── OprfReceiver.java
│       │                           │   ├── OprfReceiverOutput.java
│       │                           │   ├── OprfSender.java
│       │                           │   ├── OprfSenderOutput.java
│       │                           │   ├── cm20/
│       │                           │   │   ├── Cm20MpOprfConfig.java
│       │                           │   │   ├── Cm20MpOprfPtoDesc.java
│       │                           │   │   ├── Cm20MpOprfReceiver.java
│       │                           │   │   ├── Cm20MpOprfSender.java
│       │                           │   │   ├── Cm20MpOprfSenderOutput.java
│       │                           │   │   └── Cm20MpOprfUtils.java
│       │                           │   ├── fipr05/
│       │                           │   │   ├── Fipr05MpOprfConfig.java
│       │                           │   │   ├── Fipr05MpOprfPtoDesc.java
│       │                           │   │   ├── Fipr05MpOprfReceiver.java
│       │                           │   │   ├── Fipr05MpOprfSender.java
│       │                           │   │   └── Fipr05MpOprfSenderOutput.java
│       │                           │   ├── kkrt16/
│       │                           │   │   ├── Kkrt16OprfSenderOutput.java
│       │                           │   │   ├── Kkrt16OptOprfConfig.java
│       │                           │   │   ├── Kkrt16OptOprfPtoDesc.java
│       │                           │   │   ├── Kkrt16OptOprfReceiver.java
│       │                           │   │   ├── Kkrt16OptOprfSender.java
│       │                           │   │   ├── Kkrt16OriOprfConfig.java
│       │                           │   │   ├── Kkrt16OriOprfPtoDesc.java
│       │                           │   │   ├── Kkrt16OriOprfReceiver.java
│       │                           │   │   └── Kkrt16OriOprfSender.java
│       │                           │   └── rs21/
│       │                           │       ├── Rs21MpOprfConfig.java
│       │                           │       ├── Rs21MpOprfPtoDesc.java
│       │                           │       ├── Rs21MpOprfReceiver.java
│       │                           │       ├── Rs21MpOprfSender.java
│       │                           │       └── Rs21MpOprfSenderOutput.java
│       │                           ├── oprp/
│       │                           │   ├── AbstractOprpReceiver.java
│       │                           │   ├── AbstractOprpSender.java
│       │                           │   ├── OprpConfig.java
│       │                           │   ├── OprpFactory.java
│       │                           │   ├── OprpReceiver.java
│       │                           │   ├── OprpReceiverOutput.java
│       │                           │   ├── OprpSender.java
│       │                           │   ├── OprpSenderOutput.java
│       │                           │   └── lowmc/
│       │                           │       ├── LowMcOprpConfig.java
│       │                           │       ├── LowMcOprpPtoDesc.java
│       │                           │       ├── LowMcOprpReceiver.java
│       │                           │       ├── LowMcOprpSender.java
│       │                           │       └── LowMcUtils.java
│       │                           ├── osorter/
│       │                           │   ├── AbstractObSorter.java
│       │                           │   ├── ObSortConfig.java
│       │                           │   ├── ObSortFactory.java
│       │                           │   ├── ObSorter.java
│       │                           │   ├── bitonic/
│       │                           │   │   ├── BitonicSorter.java
│       │                           │   │   ├── BitonicSorterConfig.java
│       │                           │   │   └── BitonicSorterPtoDesc.java
│       │                           │   └── quick/
│       │                           │       ├── PrpUtils.java
│       │                           │       ├── QuickSortUtils.java
│       │                           │       ├── QuickSorter.java
│       │                           │       ├── QuickSorterConfig.java
│       │                           │       └── QuickSorterPtoDesc.java
│       │                           ├── pmpeqt/
│       │                           │   ├── AbstractPmPeqtReceiver.java
│       │                           │   ├── AbstractPmPeqtSender.java
│       │                           │   ├── PmPeqtConfig.java
│       │                           │   ├── PmPeqtFactory.java
│       │                           │   ├── PmPeqtReceiver.java
│     

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
target/
cmake-build-release/
cmake-build-debug/
local/
!.mvn/wrapper/maven-wrapper.jar

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.metals
.vscode
*.DS_Store
*.log

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### input and output
*.input
*.output
*.sosd

================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## \[1.1.5\]

### Added

- Merge `mpc4j-work-db-sketch` into `mpc4j`.
- Add a robust RPC implementation.

## \[1.1.4\]

### Added

- [important] Now the Java implementation of SEAL is fully compatible with SEAL 4.0.0. That is, one can use SEAL to serialize any parameters then use our Java implementation to deserialize, and verse visa.
- [important] We implement CKKS in the Java implementation of SEAL.
- [important] We merge the implementation of our paper SCAPE into `mpc4j` (See submodule `mpc4j-work-scape`).
- We implement a Bristol Fashion MPC circuits generator that supports both "basic" and "extend" format.

### Modified

- We add a utility class named `BlockUtil.java` and move all operations on 128-bit `byte[]` into this utility class. This allows us to speedup related operations.

## \[1.1.3\]

### Added

- [important] We update `rpc` implementations and now we do not further request starting parties in sequence.
- We implement FrodoPIR introduced in PETS 2023.
- We implement ChalametPIR introduced in CCS 2024, together with binary fuse filter.
- We implement PGM-index introduced in VLDB 2020.
- We implement various sorting algorithms in 2PC.
- We implement Plinko introduced in ePrint 2023. We introduce `update` API for client-preprocessing PIR.
- We implement Alternating-Moduli PRFs in CRYPTO 2024.
- We introduce offline/online paradigm for PSU.

### Changed

- We refine implementations for Permutation Network with speedup.
- We refine implementations for Bloom Filter, Cuckoo Filter and Vacuum Filter with speedup (inspired by the Mobile Private Contact Discovery paper in USENIX Security 2019).
- We refine implementations for Piano and MIR PIR with speedup.
- We introduce `UNSAFE` for faster type convertions.
- We introduce iterator for BFV implementations in `mpc4j-crypto-fhe`.

### Removed

- We remove `mpc4j-common-jnagmp` since we meet bugs when using JNA-GMP on Mac M3.
- We remove `mpc4j-crypto-phe`  since PHE is no longer neceesary for `mpc4j`.
- We add functions supporting large data (>2G) transmissions in `mpc4j-common-rpc`. 

### Fixed

- We fix the bug in implementing SimplePIR. Now the rounding operation is implemented correctly.
- We fix the bug for generating $n \ge 2^{22}$ for PSO. Thanks Binbin Tu for reporting this bug.

## [1.1.2]

### Added

- [important] Restrict that the minimal JDK version is JDK 21. We merge `mpc4j-crypto-simd` into corresponding modulues.
- Implement Half-tree introduced in EUROCRYPT 2023.
- Implement EACode and ECCode introduced in CRYPTO 2022 and CRYPTO 2023, respectively.
- Implement Secret-shared shuffle introduced in ASIACRYPT 2020.
- Implement altering module OPRF introduced in CRYPTO 2024.
- Speedup `GF2E` implementations.

### Changed

- We fully re-organized PIR implementations and now they are more clear and easy to read.
- We fully re-organized PCG implementations, moving triple, daBit, OSN from `mpc4j-s2pc-opf` to `mpc4j-s2pc-aby`. Based on this modification, we implement a `TrustedDealer` to deal with all PCG generations.

### Fixed

- Fixed a bug for the implementation of order-preserving encryption (EUROCRYPT 2009). Now that order-preserving encryption supports any output range $\mathcal{R}$ conditioned on $|\mathcal{R}| \geq |\mathcal{D}|$ where $|\mathcal{D}|$ is the input range.
- Fixed a bug for PSU implementations. Now we can correctly verify if PSU is implemented correctly.

## \[1.1.1\]

### Added

- [important] Create a new module `mpc4j-crypto-simd`, introduce Vector API to implement SIMD operations for bit matrix transpose. However, this requires to develop `mpc4j` using JDK 17 or later.
- Create a new module `mpc4j-crypto-algs`, implement order-preserving encryption (EUROCRYPT 2009).
- Create a new module `mpc4j-s3pc-abb3`, start to implement honest-majority three-party protocols.
- Now `mpc4j` automatically compresses equal-length data packet for `NettyRpc`.
- Implement Waksman networks.
- Implement unbalanced private set union proposed in CCS 2023.

### Changed

- update the package format so that now `mpc4j` allows many sub-protocols. 
- update the implementation of `BandLinearSolver`. Now the implementation only needs linear memory cost.
- re-organize OKVS implementation, remove many unnecessary codes.

### Fixed

- Fix a bug that `FileRpc` wrongly counts the communication cost.
- Fix a bug that reports `invalid pointer` when running examples. The bug comes from MCL. Considering the fact the OpenSSL also provides asm implementations for ECC, we now remove MCL.

## \[1.1.0\]

### Added

- [important] `mpc4j-crypto-fhe`
  - Create a new module `mpc4j-crypto-fhe` to add implementations for FHE.
  - Implement BFV scheme. The implementation can be seen as a Pure-Java version of [SEAL](https://github.com/microsoft/SEAL).

### Changed

- [important] `mpc4j-common-structure`
  - rename `mpc4j-crypto-matrix` to `mpc4j-common-structure` and re-organize codes. Move Filter and LPN from `mpc4j-common-tool` to `mpc4j-common-structure`.
  - Update serialization methods for Filters to same communication costs. 

- `mpc4j-common-tool`
  - Optimize `reduceByteArray` in `BytesUtils`.
- `mpc4j-s2pc-pir`
  - Refine code for SimplePIR.

### Fixed

- `mpc4j-s2pc-opf`
  - Fix a bug that OprfUtils generates wrong sets for unequal set size.
- `mpc4j-s2pc-pir`
  - Fix a security flow in the implementation of Labeled PSI (CCS 2021).
- `mpc4j-s2pc-pso`
  - Fix some bugs and refine codes for many PSI implementations. 

## \[1.0.9\]

### Added

- `mpc4j-common-tool`
  - Introduce the way of setting ball-and-box argument in open source code [VOLE-PSI](https://github.com/Visa-Research/volepsi), see `MaxBinSizeUtils` for more details.
  - Introduce a more efficient way of doing operations in GF128 field. The implementation is inspired by the blog [Reversing a Finite Filed Multiplication Optimizaion](https://blog.quarkslab.com/reversing-a-finite-field-multiplication-optimization.html).
  - Implement operations in GF64 field.
- `mpc4j-common-matrix`
  - Implement "Blazing Fast OKVS" introduced in the paper "Blazing Fast PSI from Improved OKVS and Subfield VOLE". The implementation is inspired by the open-source code [VOLE-PSI](https://github.com/Visa-Research/volepsi).
  - Implement "band encoding OKVS" introduced in the paper "Near-Optimal Oblivious Key-Value Stores for Efficient PSI, PSU and Volume-Hiding Multi-Maps". We thank Joon Young Seo and Kevin Yeo for the offline discussion of some implementation details.
- `mpc4j-s2pc-pcg`
  - Implement silent VOLE (both for semi-honest version and the malicious version) in GF128 field, using the technique introduced in the paper "Wolverine: Fast, Scalable, and Communication-Efficient Zero-Knowledge Proofs for Boolean and Arithmetic Circuits".
  - Implement single-point OT / single-point VOLE for ease of tests.
- `mpc4j-s2pc-opf`
  - Implement private set membership protocol introduced in the paper "Circuit-PSI with Linear Complexity via Relaxed Batch OPPRF". 
  - Implement VOLE-OPRF introduced in the paper "VOLE-PSI: fast OPRF and circuit-PSI from vector-OLE".
- `mpc4j-s2pc-pir`
  - Implement native and PBC batch query for index PIR.
  - Implement unbalanced circuit PSI introduced in the paper "PSI with computation or Circuit-PSI for Unbalanced Sets from Homomorphic Encryption".
  - Implement circuit PSI (both for equal-size and unequal-size) introduced in the paper "Efficient circuit-based PSI with linear communication".
  - Implement circuit PSI (both for equal-size and unequal-size) introduced in the paper "Circuit-PSI with Linear Complexity via Relaxed Batch OPPRF".
  - Implement client-preprocessing PIR introduced in the paper "Piano : Extremely Simple , Single-Server PIR with Sublinear Server Computation". The implementation is inspired by the open-source code [Piano-PIR](https://github.com/pianopir/Piano-PIR).
  - Implement client-preprocessing PIR introduced in the paper "Simple and Practical Amortized Sublinear Private Information Retrieval".
- `mpc4j-s2pc-pso`
  - Implement aider-PSI introduced in the paper "Scaling private set intersection to billion-element sets".
  - Implement RT21 PSI introduced in the paper "Compact and Malicious Private Set Intersection for Small Sets". The implementation is inspired by the open-source code [MiniPSI](https://github.com/osu-crypto/MiniPSI).
  - Implement PRTY19 PSI introduced in the paper "SpOT-Light : Lightweight Private Set Intersection from Sparse OT Extension".
  - Implement PRTY20 PSI introduced in the paper "PSI from PaXoS: Fast, Malicious Private Set Intersection".
  - Implement DCW13 PSI introduced in the paper "When private set intersection meets big data: An efficient and scalable protocol".
  - Implement RS21 PSI introduced in the paper "VOLE-PSI: fast OPRF and circuit-PSI from vector-OLE".
  - Implement RR22 PSI introduced in the paper "Blazing Fast PSI from Improved OKVS and Subfield VOLE".
  - Implement PSZ14 PSI introduced in the paper "Faster Private Set Intersection based on OT Extension".

### Changed

- `mpc4-common-tool`
  - Introduce ways of computing distinct hashes in the open-source code [VOLE-PSI](https://github.com/Visa-Research/volepsi) (related to Bloom Filter, Garbled Bloom Filter, and Garbled Cuckoo Table).
  - Choose parameters for no-stash cuckoo hash for small item sizes.
- `mpc4j-common-matrix`
  - Refactor codes for OKVS so that OKVS implementations with doubly obliviousness share the same code with standard OKVS implementations.
- `mpc4j-s2pc-pir`
  - Faster matrix multiplication by avoiding unnecessary module operation in SimplePIR.
  - Refined labeled-PSI implementations based on the open-source code [APSI](https://github.com/Microsoft/APSI) of the paper "Labeled PSI from Homomorphic Encryption with Reduced Computation and Communication".
  
### Fixed

- common
  - Update documentations to show to install FourQ, and how to solve the problem if FourQ test cases are failed.
- `mpc4j-s2pc-pcg`
  - Fix a bug for wrong LPN parameters used in silent OT.
  - Fix a bug for malicious-secure 1-out-of-2 COT introduced in the paper "SoftSpokenOT: Communication - Computation Tradeoffs in OT Extension" and fixed by the revised version of the paper "Actively Secure OT Extension with Optimal Overhead".
- `mpc4j-s2pc-pir`
  - Fix a bug for SimplePIR to support values with arbitrary bit length (instead of bit length that divides `Byte.SIZE`).
  - Fix a bug for Vectorized PIR to support values with arbitrary bit length (instead of bit length that divides `Byte.SIZE`).
- `mpc4j-s2pc-pjc`
  - fix a bug when running PID with unequal set size.

## \[1.0.8\]

### Added

- `mpc4j-common-circuit`
  - We abstract `MpcZlVector` and `MpcZlParty`.
  - We add some circuit implementations, including adder, multiplier, and sorting network.
- `mpc4j-common-tool`
  - We add a new BitVector named `CombinedBitVector` that tries its best to support efficient BitVector operations. Now users can use `CombinedBitVector` for all cases.
- `mpc4j-crypto-matrix`
  - We implement Zp matrix and Zp64 matrix.
- `mpc4j-s2pc-pcg`
  - We implement coin-tossing protocols with semi-honest and malicious security.
- `mpc4j-sp2c-aby`
  - We implement Trust-Dealer model, that is, an aider can distribute Boolean and Multiplication triples for general MPC.
  - We implement daBits and EdaBits.
  - We implement some comparisons.
- `mpc4j-s2pc-opf`
  - We implement Naor-Ringold OPRF, and OPRP-based OPRF.
- `mpc4j-s2pc-pir`
  - We implement more index PIRs, including Simple / Double PIR (USENIX Security 2023), Mul PIR (USENIX Security 2021), constant-weight PIR (USENIX Security 2022).
  - We implement Pantheon PIR (VLDB 2022).
- `mpc4j-s2pc-pso`
  - We formalize and implement some PSI cardinality protocols, including EC-DH-based, DH-OPRF-based, and circuit-PSI-based.
  - We implement server-aided PSI protocols.
- others
  - We add test cases for PSU, PID and PMID.

### Changed

- `mpc4j-common-tool`
  - We refine Filter implementations.
  - We refine implementations for sparse bit vector and sparse bit matrix.
- `mpc4j-s2pc-pcg`
  - We add silent model for all protocols that can leverage silent OT to reduce communication costs.
  - We remove number of bits / number of elements in general MPC.
- `mpc4j-crypto-matrix`
    - We move OKVS implementations into `mpc4j-crypto-matrix`.
- others
  - We refine configs for multi-party protocols so that we can remove many duplicate codes.
  - We refine test cases for multi-party protocols so tha we can remove many duplicate codes.

### Fixed

- `mpc4j-common-tool`
  - We fixed a bug in CommitFactory. We need to create a commitment scheme with SHA256 hash for STANDARD and with SM3 hash for INLAND.
- `mpc4j-crypto-matrix`
  - We fixed a bug for `toString()` in vectors and databases. We need to correctly display the string even if the vector (the database) is empty (with num = 0).

## \[1.0.7\]

### Added

- `mpc4j-common-circuit`
  - We add a new module `mpc4j-common-circuit` to write all circuits in a unified manner.
  - We add some basic integer circuits: add, sub, increase one, equality (eq), less than or equal to (leq).
- `mpc4j-crypto-matrix`
  - We add a new module `mpc4j-crypto-matrix` to put functionalities related to cryptographic matrix operations.
  - We add some database / vector implementations.
- `mpc4j-common-rpc`
  - We add `receiveAny()` in Rpc.
  - We update the way of generating taskId. Now all sub-protocols have the same taskId with the root protocol. We distinguish sub-protocols using encodeTaskId. See `AbstractMultiPartyPto` for more details.
- `mpc4j-common-tool`
  - We add algebra operation interfaces in `galoisfiled`, including zl (Z mod (1 << l)), zl64 (Z mod (1 << l) where l < 64), zn (Z mod n), zn64 (Z mod n where n < (1 << 64)), zp (Z mod p where p is a prime), zp64 (Z mod p where p is a prime and p < (1 << 64)). 
  - We introduce FourQ ECC.
- `mpc4j-dp-service`
  - Now main supports more configurations: (1) Allow running without plain case; (2) Allow no/empty settings for α, ε_w, fo_types, hg_types.
  - Add necessary test cases for HhLdpMain.
- `mpc4j-s2pc-pcg`
  - We add HE-based and OT-based multiplication triple generation protocols introduced in the DSZ15 paper.
  - We add FHE-based multiplication triple generation protocol introduced in the RSS19 paper.
  - We implement pre-computed 1-out-of-n OTs based on the silent OT.
- `mpc4j-s2pc-aby`
  - We refine many implementations for Boolean circuits.
  - We implement mux operations introduced in RRK+20 and RRG+21 papers.
  - We implement Boolean circuit based PEQT protocol and the optimized PEQT protocol introduced in the CGS22 paper.
- `mpc4j-s2pc-pir`
  - We implement vector PIR introduced in the MR23 paper.
- `mpc4j-s2pc-opf`
  - We create a new module `mpc4j-s2pc-opf` for oblivious pseudo-random functions.
  - We implement programmable OPRFs based on OKVS introduced in the PSTY19 paper.
  - We implement related-batch programmable OPRFs introduced in the CGS22 paper.
  - We implement single-query OPRF introduced in the RA17 paper.
- `mpc4j-s2pc-pso`
  - We implement two circuit PSI protocols (without associated payload) introduced in the PSTY19 and CGS22 paper.

### Fixed

- `mpc4j-common-tool`
  - Fix a bug when switching the elliptic curve. In [Missing docs for c++ interface? #72](https://github.com/herumi/mcl/issues/72), the MCL author said "The current version does not support multi parameters. At first, I had developed the features, but I gave up it because a class dependency was very complicated." It brings some problems when we want to switch from an elliptic curve to another one that both use MCL. Now, we only allow users to use SEC_P256_K1 with MCL. 
- `mpc4j-dp-service`
  - Fix a bug for AppleHcmsFoLdp, we note that in Java, a % b (for b > 0) can have negative value. Therefore, we need to write Math.abs(a % b) instead of directly a % b to ensure a % b must be in \[0, b). Thank Xiaochen Li for the report.
  - Fix a bug for OLH and FLH, we note that $g$ in OLH and FLH must be an integer. Therefore, we cannot directly use the optimized frequency estimation formula to estimate the count. Instead, we use the original formula.
- `mpc4j-s2pc-pcg`
  - We slightly reduce the communication cost for distributed oblivious puncturable OPRF.
- `mpc4j-s2pc-aby`
  - Now we allow large BitNums per operations in the Boolean circuit.

## \[1.0.6\]

### Added

- `mpc4j-common-sampler`
    - We implement many discrete Gaussian sampling techniques, including native sampling, Alias sampling, sigma-2 sampling, convolution techniques, and discrete gaussian sampling introduced in NIPS 2020.
- `mpc4j-common-tool`
    - We implement metrics used for HeavyHitter (in `metrics/HeavyHitterMetrics.java`), including NDCG (Normalized
      Discounted Cumulative Gain), precision, and relative error.
    - We introduce a new tool named `BitVector` for efficient bit operations.
    - We add `MathPreconditions` for math precondition checks.
    - We implement the non-cryptographic hash function [BobHash](http://burtleburtle.net/bob/hash/evahash.html) and introduce [xxHash](https://github.com/lz4/lz4-java) in pure-Java.
- `mpc4j-dp-service`
    - We create a new module `mpc4j-dp-service` for implementing specific differential private mechanisms, e.g., Frequency Oracles.
    - We implement state-of-the-art LDP-based frequency oracle mechanisms, including Hadamard-related mechanisms, Unary Encoding (UE)-related mechanisms, Direct Encoding (DE)-related mechanisms, Local Hash (LH)-based mechanisms.
- `mpc4j-s2pc-pir`
    - We implement SealPIR, OnionPIR and FastPIR.
- `mpc4j-s2pc-pjc`
    - We create a new module `mpc4j-s2pc-pjc` to manage "Private Join and Compute" protocols, such as PSI-CA, PID, PMID,
      PSI-CA-SUM, and others.

### Changed

- common
  - Previously, we place our own `log4j.properties` in `resources`. However, this may reject developers to use its
    own `log4j.properties`. We replace all `log4j.properties` from `main/resources` to `test/resources`.
  - We optimize `LongUtils.ceilLog2` and some implementations in `BigIntegerUtils` based on Guava.
- `mpc4j-common-tool`
    - We rename package `correlation` to `metrics` so that we can include other metrics in that package.
    - We replace `RankUtils.java` with package `util`.
    - We optimize implementations for the Hadamard matrix and the Hadamard coder.
- `mpc4j-s2pc-pso`
    - We move blackIP data from module `mpc4j-s2pc-pso` to the dictionary `data`.
    - We move PID and PMID from module `mpc4j-s2pc-pso` to module `mpc4j-s2pc-pjc`.

### Fixed

- `mpc4j-common-tool`
  - We fixed a bug in `RandomCoderUtils.java`, thanks Qixian Zhou for reporting.

## \[1.0.5\]

### Added

- `mpc4j-common-tool`
    - Polynomial: We add batched polynomial implementation algorithms (both for Java and C/C++) introduced in the CRYPTO
      2019
      paper [SpOT-Light: Lightweight Private Set Intersection from Sparse OT Extension](https://eprint.iacr.org/2019/634)
      .
    - Ecc: We now support pure-Java [Ristretto](https://ristretto.group/) curve. We also support pure-Java Elliagtor
      encoding/decoding introduced in the CCS 2021
      paper [Compact and Malicious Private Set Intersection for Small Sets](https://eprint.iacr.org/2021/1159).
- `mpc4j-common-rpc`
    - We add the interface `PtoFactory` and make protocol factory classes implement `PtoFactory`.
    - We add `setEnvType()` into the interface `SecurePtoConfig`. All protocol config can support `setEnvType()` so that
      we can switch `EnvType.STANDARD` to others in a unified way.
- `mpc4j-native-fhe`
    - We merged all native tools in one utils class for all protocols.
- `mpc4j-s2pc-pcg`
    - Multiplication Triple in Zp64: Introduce Multiplication Triple Generation (MTG) under Zp64 in `mpc4j-s2pc-pcg`.
- `mpc4j-s2pc-pir`
    - Index PIR: We implemented XPIR proposed in the PETS 2022
      paper [XPIR : Private Information Retrieval for Everyone](https://petsymposium.org/2016/files/papers/XPIR___Private_Information_Retrieval_for_Everyone.pdf)
      .
- `mpc4j-s2pc-pso`
    - `psu`
        - Now `Main` supports unbalanced PSU inputs.
        - Now `Main` supports BlackIP tests, recommended by anonymous USENIX Security 2023 reviewers.

### Changed

- Documentations
    - We update documentations for how to install and run `mpc4j`. Now, the documentation contains installing `mpc4j` in
      Ubuntu and CentOS Docker images both for `aarch64` and `x86_64`.
- `mpc4j-common-tool`
    - We revise the code for `SparseBitMatrix`. Now the code is easier to understand.

### Fixed

- `mpc4j-common-rpc`
    - Fix issue \#5.
- `mpc4j-native-tool`
    - We thank anonymous USENIX Security 2023 Artifact Evaluation (AE) reviewers for many suggestions
      for `mpc4j-native-tool`. These suggestions help us fix many memory leakage problems. Also, the comments help us
      remove many duplicate codes. Specifically, we replace constant-size heap allocations (
      e.g., `auto *p = new uint8_t[]`) with stack allocations (e.g., `uint8_t p[]`). We fixed many memory leakage bugs
      in our C/C++ implementations.
    - We update `CMakeList.txt` so that one can successfully compile `mpc4j-native-tool` in Ubuntu and CentOS Docker
      images both for `aarch64` and `x86_64`.

## \[1.0.4\]

### Added

- `mpc4j-common-tool`
    - ByteEcc: Add scalar validation for X25519. Add libsodium support for both X25519 and Ed25519.
    - Kyber: Add post-quantum secure public key encryption scheme Kyber. The implementation is modified
      from [KyberJCK](https://github.com/fisherstevenk/kyberJCE).
- `mpc4j-s2pc-pcg`
    - Multiplication Triple in Zl: Introduce Multiplication Triple Generation (MTG) under Zl in `mpc4j-s2pc-pcg`.
    - Kyber Base-OT: Introduce Kyber Base-OT schemes.
- `mpc4j-s2pc-pso`
    - mqRPMT: Introduce mqRPMT.
    - Facebook PID: Introduce the Facebook PID scheme based on X25519.
    - PSI: Introduce EC-DH-PSI and KKRT16-PSI.

### Changed

- `mpc4j-s2pc-pcg`
    - $2^l$-out-of-1 homomorphic oblivious transfer: We change $2^l$-out-of-1 homomorphic oblivious transfer to core
      $2^l$-out-of-1 oblivious transfer. In this way, $2^l$-out-of-1 oblivious transfer implementations have the same
      style with 2-out-of-1 oblivious transfer implementations.

### Remove

- `mpc4j-common-tool`
    - `byte[]` -> `int[]`: More tests show that the ByteBuffer conversion is as fast as unsafe conversion. We remove the
      unsafe conversion method. Now, developer can use `mpc4j` on any JDK with version 1.8 or later (instead of only
      1.8).
- `mpc4j-s2pc-pcg`
    - n-out-of-1 oblivious transfer: We remove n-out-of-1 oblivious transfer since it seems useless in the current
      framework.

## \[1.0.3\]

### Added

- CHANGELOG: We add CHANGELOG.md to write any changes during our development.
- UNSAFE: We find that `byte[]` to `int[]` conversion dominates the cost for Silent OT. We
  add `unsafeByteArrayToIntArray` in `IntUtils`, and introduce such a method in our Silent OT implementation.
- Ecc in OpenSSL: Ecc now supports OpenSSL. This means that we now have C/C++ SM2 implementation in `mpc4j`.
- ByteEcc: We add `ByteMulEcc` and `ByteFullEcc` interface and its Ed25519 and X25519 implementations. The performance
  report shows that Ed25519 and X25519 are more efficient than the standard Ecc implementations but with some
  limitations. For example, X25519 only supports multiplication with specific scalars.
- PropertiesUtils: We add `PropertiesUtils` in `mpc4j-common-tool` for ease of using `Properties`. In addition, we
  refine `main` in `mpc4j-s2pc-pso` and `mpc4j-sml-opboost`.

### Changed

- Fixed-Point Multiplication in ECC: In `mpc4j-common-tool`, we introduce the Window Method for ECC Fixed-Point
  Multiplication implemented in MCL into our pure-Java implementation, replacing the pre-computation techniques provided
  by Bouncy Castle. The efficiency results show that our new implementation is about 10x faster than the original one.
- Multiplication Triple: In `mpc4j-s2pc-pcg`, we merge Boolean Triple Generation (BTG) packages into Multiplication
  Triple Generation (MTG) packages and rename `booleanTriple` to `Z2Triple`, since BTG is a special case of MTG under
  the Z2 Field.
- Distributed Punctured PRF: In `mpc4j-s2pc-pcg`, we define a new protocol named Distributed Punctured PRF (DPPRF), and
  move all related implementations into DPRRF. This helps remove repeating codes when using DPPRF to implement subfield
  VOLE, including Silent OT and $GF(2^{\kappa})$-(sub)VOLE.
- PMID in `mpc4j-s2pc-pso` supports multiset inputs for both parties. We further refine implementations for PMID
  protocols.

### Removed

- Single Sparse-Point COT (`sspcot`): We remove `sspcot` in our Silent OT implementation since there is no usage
  in `mpc4j`. We recommend developers use `mspcot` instead.
- Z2-VOLE: We find that Z2-VOLE is not secure and has no usage. We remove it from `mpc4j`.

### Fixed

- Ecc multiple init: We find a bug that if we first init the first native Ecc, then init the second native Ecc, and
  finally use the first one, an error would arise. This is because we call `native.init` in the constructor, and the
  later constructor would overlap the previous status. We fix this bug by refining our ECC implementation.
- APSI: There would be some unknown error when using `try_clear_irrelevant_bits` (provided
  by [the original APSI implementation](https://github.com/microsoft/APSI/blob/main/sender/apsi/bin_bundle.cpp)) to
  reduce communication costs. The error occurs with relatively low probability, around 0.8% in total tries. We remove it
  from our APSI implementation to ensure 100% correctness.
- APSI: Add JNI memory release functions in `mpc4j-native-fhe/upsi/serialize.cpp`.

## Reminder

### Guiding Principles

- Changelogs are for humans, not machines.
- There should be an entry for every single version.
- The same types of changes should be grouped.
- Versions and sections should be linkable.
- The latest version comes first.
- The release date of each version is displayed.
- Mention whether you follow [Semantic Versioning](https://semver.org/).

### Types of Changes

- `Added` for new features.
- `Changed` for changes in existing functionality.
- `Deprecated` for soon-to-be removed features.
- `Removed` for now removed features.
- `Fixed` for any bug fixes.
- `Security` in case of vulnerabilities.

================================================
FILE: INSTRUCTIONS.md
================================================
# 使用`mpc4j`时的常用指令

## Maven

可以使用[Maven版本管理插件](http://www.mojohaus.org/versions-maven-plugin/)在多模块Maven项目中更新模块的版本号,参见[《如何轻松地在多模块Maven项目中更新模块的版本号》](https://segmentfault.com/a/1190000021421931)和[《maven的版本升级、切换》](https://my.oschina.net/dylw/blog/896906)。

如果想将版本设置为2.50.1-SNAPSHOT,可执行下述指令。此指令将调整多模块项目中的所有pom版本、父版本和依赖版本。

```shell
mvn versions:set -DnewVersion=2.50.1-SNAPSHOT
```

如果输入的版本号有误,可以执行下述指令恢复到上一个版本。

```shell
mvn versions:revert
```

如果对结果感到满意,可以执行下述指令提交版本号。

```shell
mvn versions:commit
```

## SSH

### 安装SSH

Ubuntu使用下述指令安装SSH服务。

```shell
sudo apt-get install openssh-server
```

CentOS使用下述指令安装SSH服务。

```shell
sudo yum -y install openssh-server
```

### 查看SSH是否启动

使用下述指令查看SSH是否启动。如果启动,命令结果下方应该显示sshd。

```shell
sudo ps -e | grep ssh
```

### 启动SSH

如果上述查看SSH的命令没有显示sshd,则需要启动SSH服务。

```shell
sudo /etc/init.d/ssh start
```

### 远程连接

假定远程服务器的用户名为username,IP地址为`xxx.xxx.xxx.xxx`,则使用下述指令完成远程连接。

```shell
ssh username@xxx.xxx.xxx.xxx
```

如果提示输入口令,则正确输入口令后即可启动远程连接。

### 向远程服务器上传文件

假定远程服务器的用户名为username,IP地址为`xxx.xxx.xxx.xxx`,想要上传的文件为当前目录下的`test.jar`,想要上传到远程服务器的目录`/home/username`下,则执行下述指令。

```shell
scp test.jar username@xxx.xxx.xxx.xxx:/home/username/
```

如果想要上传文件夹`doc/`,则执行下述指令。

```shell
scp -r doc/ username@xxx.xxx.xxx.xxx:/home/username/
```

### 从远程服务器下载文件

假定远程服务器的用户名为username,IP地址为`xxx.xxx.xxx.xxx`,想要下载远程服务器的文件`/home/username/test.jar`,想要下载到当前目录下,则使用下述指令。

>  最后的`.`表示为下载到当前目录下。

```shell
scp username@xxx.xxx.xxx.xxx:/home/username/test.jar .
```

## 后台运行程序命令`nohup`

虽然可以通过SSH控制服务器远程运行程序,但运行过程中SSH不能断开,否则运行的程序也会中止。这个问题的关键在于要让程序在服务器的后台运行。为了达到这一目的,需要使用`nohup`命令。`nohup`的英文全称是"no hang up"(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。`nohup`命令在默认情况下(非重定向时),会输出一个名叫`nohup.out`的文件到当前目录下,如果当前目录的`nohup.out`文件不可写,输出重定向到`$HOME/nohup.out`文件中。`nohup`的介绍参见[《Linux nohup 命令》](https://www.runoob.com/linux/linux-comm-nohup.html)。

假定我们要在后台挂起一个`test.jar`、参数为`10`的任务,则在SSH下执行下述命令:

```shell
nohup java -jar test.jar 10 &
```

如果想让输出结果重定向到另一个文件(如`log.out`),则在SSH下执行下述命令:

```shell
nohup java -jar test.jar 10 > log.out 2>&1 &
```

如果想查看此任务是否已经执行,在`SSH`执行下述命令:

```shell
ps -aux|grep java
```

输出格式:
```text
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
```

## 网络限流命令`TC`

在进行性能测试时,往往需要人工对网络限流。经过测试,网上搜索到的`tcconfig`、`wondershaper`等工具都无法成功对局域网限流。因此,我们仍然需要使用`tc`实现限流。`tc`是一个非常复杂的工具,我们参考文章[《How to Use the Linux Traffic Control》](https://netbeez.net/blog/how-to-use-the-linux-traffic-control/),只对局域网进行简单的限流。

### 安装`iproute`

`tc`命令包含在`iproute`中,执行下述指令安装`iproute`。

```shell
sudo apt-get install iproute
```

### 显示与删除策略

假定网卡名称为`lo`,执行下述指令,可以查看当前网卡`lo`的限流策略。

```shell
sudo tc qdisc show dev lo
```

如果想修改限流策略,首先需要删除当前的策略。假定网卡名称为`lo`,执行下述指令,可以删除当前网卡`lo`的限流策略。

```shell
sudo tc qdisc del dev lo root
```

### 增加网络延迟

假定网卡名称为`lo`,执行下述指令,可以将当前网卡`lo`网络带宽限制到1Mbit,RTT时间为80ms。

```shell
sudo tc qdisc add dev lo root netem rate 1mbit latency 80ms
```

================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

================================================
FILE: PAPERS.md
================================================
# Implementations of Existing Works

`mpc4j` contains some implementations of existing works. Parts of the works are listed in this documentation. We note that we rewrite some of the implementations to have a unified style. See Section References in `README.md` for more details.

## Basic Tools

### FHE

We provide an pure-Java implemeantion of BFV scheme. The implementation can be seen as a pure-Java version of [SEAL](https://github.com/microsoft/SEAL). See `mpc4j-crypto-fhe` for details.

### Filter

Besides Bloom Filter, we implement some filter algorithms in `mpc4j-common-tool`, including Cuckoo Filter and Vacuum Filter. We plan to implement Morton Filter but without any timeline.

- Wang, Minmei, and Mingxun Zhou. Vacuum Filters: More Space-efficient and Faster Replacement for Bloom and Cuckoo Filters. VLDB 2019.
- Fan, Bin, Dave G. Andersen, Michael Kaminsky, and Michael D. Mitzenmacher. Cuckoo Filter: Practically Better than Bloom.  CoNEXT 2014, ACM, pp. 75-88.
- Daniel Kales, Christian Rechberger, Thomas Schneider, Matthias Senker, and Christian Weinert. Mobile Private Contact Discovery at Scale. USENIX Security 2019, pp. 1447-1464. 2019. (This paper introduces optimizations for Cuckoo Filter)

### Cuckoo Hash

We implement some Cuckoo Hashes in `mpc4j-common-tool`. See the following papers for more details.

- Pinkas, Benny, Thomas Schneider, and Michael Zohner. Scalable Private Set Intersection Based on OT Extension. ACM Transactions on Privacy and Security, 21, no. 2 (2018): 1-35.
- Demmler, Daniel, Peter Rindal, Mike Rosulek, and Ni Trieu. PIR-PSI: Scaling Private Contact Discovery. PETS 2018, 4, pp. 159-178.

### Cryptographic Tools

We implement some cryptographic tools in `mpc4j-common-tool`. We believe these tools may help users to implement other applications as well.

**Elligator Encoding for Curve25519**: An important tool for constructing simple maliciously secure PSI, see:

- Rosulek, Mike, and Ni Trieu. Compact and Malicious Private Set Intersection for Small Sets. CCS 2021, ACM, pp. 1166-1181.

**FourQ**: A high-security, high-performance elliptic curve that targets the 128-bit security level. Based on the open-source library [FourQlib](https://github.com/microsoft/FourQlib), we rewrite `MakeFile` so that now FourQ can run on MacBook. 

- Costello, Craig, and Patrick Longa. FourQ: Four-dimensional Decompositions on A-curve over the Mersenne Prime. ASIACRYPT 2015, Part I, Springer Berlin Heidelberg, pp. 214-235.

**Benes Network**: An instance of permutation network, which is a key tool for Oblivious Switching, see:

- Garimella, Gayathri, Payman Mohassel, Mike Rosulek, Saeed Sadeghian, and Jaspal Singh. Private Set Operations from Oblivious Switching. PKC 2021, Cham: Springer International Publishing, pp. 591-617.

**Polynomial Interpolation**: An important tool for many MPC protocols. We also implement batch polynomial interpolation, efficient random-point padding, and others, see:

- Pinkas, Benny, Mike Rosulek, Ni Trieu, and Avishay Yanai. SpOT-light: Lightweight Private Set Intersection from Sparse OT Extension. CRYPTO 2019, Part III, Springer International Publishing, pp. 401-431.
- Kolesnikov, Vladimir, Mike Rosulek, Ni Trieu, and Xiao Wang. Scalable Private Set Union from Symmetric-key Techniques. ASIACRYPT 2019, Part II, Cham: Springer International Publishing, pp. 636-666.

### Indexes in Database Fields

- Paolo Ferragina, and Giorgio Vinciguerra. The PGM-index: A Fully-dynamic Compressed Learned Index with Provable Worst-case Bounds. Proceedings of the VLDB Endowment 13, no. 8 (2020): 1162-1175.

## Cryptographic Primitives

- Boldyreva, Alexandra, Nathan Chenette, Younho Lee, and Adam O’neill. Order-preserving symmetric encryption. EUROCRYPT 2009, pp. 224-241, 2009.

## Discrete Gaussian Sampler

We implement some discrete Gaussian sampling algorithms (also known as Discrete Gaussians over the Integers) in `mpc4j-common-sampler`. We learned a lot from the library [dgs](https://github.com/malb/dgs).

- Canonne, Clément L., Gautam Kamath, and Thomas Steinke. The Discrete Gaussian for Differential Privacy. NIPS 2020, 33, pp. 15676-15688.
- Micciancio, Daniele, and Michael Walter. Gaussian Sampling over the Integers: Efficient, Generic, Constant-time. CRYPTO 2017, Part II, Springer International Publishing, pp. 455-485.
- Pöppelmann, Thomas, Léo Ducas, and Tim Güneysu. Enhanced Lattice-based Signatures on Reconfigurable Hardware. CHES 2014, Springer Berlin Heidelberg, pp. 353-370.
- Ducas, Léo, Alain Durmus, Tancrède Lepoint, and Vadim Lyubashevsky. Lattice Signatures and Bimodal Gaussians. CRYPTO 2013, Part I, Springer Berlin Heidelberg, pp. 40-56.

## Oblivious Key-Value Storage

Oblivious Key-Value Storage (OKVS) is a very implement data structure abstraction used in MPC. We implement some OKVS data structures, including its instances like XePaXoS, PaXoS, and Mega Bin, in `mpc4j-common-tool`.

- Garimella, Gayathri, Benny Pinkas, Mike Rosulek, Ni Trieu, and Avishay Yanai. Oblivious Key-Value Stores and Amplification for Private Set Intersection. CRYPTO 2021, Part II, Springer International Publishing, pp. 395-425.
- Rindal, Peter, and Phillipp Schoppmann. VOLE-PSI: Fast OPRF and Circuit-PSI from Vector-OLE. EUROCRYPT 2021, Part II, Cham: Springer International Publishing, pp. 901-930.
- Pinkas, Benny, Mike Rosulek, Ni Trieu, and Avishay Yanai. PSI from PaXoS: Fast, Malicious Private Set Intersection. EUROCRYPT 2020, Part II, Cham: Springer International Publishing, pp. 739-767.
- Pinkas, Benny, Thomas Schneider, Oleksandr Tkachenko, and Avishay Yanai. Efficient Circuit-Based PSI with Linear Communication. EUROCRYPT 2019, Part III, Springer International Publishing, pp. 122-153.
- Thomas Mueller Graf, and Daniel Lemire. Binary Fuse Filters: Fast and Smaller than XOR Filters. Journal of Experimental Algorithmics (JEA) 27, no. 1 (2022): 1-15. We note that Binary Fuse FIlters can be seen as a special case of OKVS.

## Frequency Oracle with Local Differential Privacy

We implement some Frequency Oracle (FO) with Local Differential Privacy in `mpc4j-dp-service`. We learned a lot from the library [Pure-DP](https://github.com/Samuel-Maddock/pure-LDP).

- Cormode, Graham, Samuel Maddock, and Carsten Maple. Frequency Estimation under Local Differential Privacy.  VLDB 2021, pp. 2046-2058.
- Acharya, Jayadev, Ziteng Sun, and Huanyu Zhang. Hadamard Response: Estimating Distributions Privately, Efficiently, and with Little Communication. AISTATS 2019, PMLR, pp. 1120-1129.
- Acharya, Jayadev, and Ziteng Sun. Communication Complexity in Locally Private Distribution Estimation and Heavy Hitters. ICML 2019, PMLR, pp. 51-60.
- Wang, Tianhao, and Jeremiah Blocki. Locally Differentially Private Protocols for Frequency Estimation. USENIX Security 2017.
- Differential Privacy Team, Apple. Learning with Privacy at Scale. Technique Report, 2017.
- Erlingsson, Úlfar, Vasyl Pihur, and Aleksandra Korolova. RAPPOR: Randomized Aggregatable Privacy-Preserving Ordinal Response. CCS 2014, ACM, pp. 1054-1067.

## Pseudorandom Correlation Generator

PCG allows two or more parties to securely generate long sources of useful correlated randomness via a local expansion of correlated short seeds. Correlated Oblivious Transfer (COT), Vector Oblivious Linear Evaluation (VOLE), Subfield VOLE, and multiplication triples can be seen as instances of PCG. We implement some PCG in `mpc4j-s2pc-pcg`.

### Basic Tools

We implement some basic tools used in PCG. We learned a lot from [KyberJCE](https://github.com/fisherstevenk/kyberJCE) when implementing Kyber. We learned a lot from [emp-toolkit](https://github.com/emp-toolkit) when implementing Correlated Robust Hash Function (CRHF) and Twisted CRHF (TCRHF).

- Bos, Joppe, Léo Ducas, Eike Kiltz, Tancrède Lepoint, Vadim Lyubashevsky, John M. Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. CRYSTALS-Kyber: A CCA-secure Module-lattice-based KEM. EuroS\&P 2018, IEEE, pp. 353-367.
- Guo, Chun, Jonathan Katz, Xiao Wang, and Yu Yu. Efficient and Secure Multiparty Computation from Fixed-key Block Ciphers.S\&P 2020, IEEE, pp. 825-841.

### Coin-tossing Protocol

Some protocols (especially protocol with malicious security) needs to invoke a (maliciously secure) coin tossing protocol for unbiased randomness generation. We implement the commonly used coin-tossing protocol that was proposed by Blum in the following paper.

- Blum, Manuel. Coin flipping by phone. In COMPCON, pp. 133-137. 1982.

The security proof is shown in the following paper.

- Lindell, Yehuda. How to simulate it: a tutorial on the simulation proof technique. Tutorials on the Foundations of Cryptography: Dedicated to Oded Goldreich (2017): 277-346.

### Base OT

There are many research results related to base OT. We adjust some results in instance implementations.

- Canetti, Ran, Pratik Sarkar, and Xiao Wang. Blazing Fast OT for Three-round UC OT Extension. PKC 2020, Part II, Springer International Publishing, pp.299-327.
- Mansy, Daniel, and Peter Rindal. Endemic Oblivious Transfer. CCS 2019, ACM, pp. 309-326.
- McQuoid, Ian, Mike Rosulek, and Lawrence Roy. Batching Base Oblivious Transfers. ASIACRYPT 2021, Part III, Springer International Publishing, pp. 281-310.
- Chou, Tung, and Claudio Orlandi. The Simplest Protocol for Oblivious Transfer. LATINCRYPT 2015, Springer International Publishing, pp. 40-58.
- Naor, Moni, and Benny Pinkas. Efficient Oblivious Transfer Protocols. SODA 2001, ACM, pp. 448-457.

### OT Extension, Silent OT, and VOLE

We implement some OT Extension (OTE) and Silent OT protocols.

- Guo, Xiaojie, Kang Yang, Xiao Wang, Wenhao Zhang, Xiang Xie, Jiang Zhang, and Zheli Liu. Half-tree: Halving the cost of tree expansion in cot and dpf. EUROCRYPT 2023, pp. 330-362.
- Raghuraman, Srinivasan, Peter Rindal, and Titouan Tanguy. Expand-convolute codes for pseudorandom correlation generators from LPN. CRYPTO 2023, pp. 602-632.
- Boyle, Elette, Geoffroy Couteau, Niv Gilboa, Yuval Ishai, Lisa Kohl, Nicolas Resch, and Peter Scholl. Correlated pseudorandomness from expand-accumulate codes. CRYPTO 2022, pp. 603-633.
- Couteau, Geoffroy, Peter Rindal, and Srinivasan Raghuraman. Silver: Silent VOLE and Oblivious Transfer from Hardness of Decoding Structured LDPC Codes. CRYPTO 2021, Part III, Cham: Springer International Publishing, pp. 502-534. (**Warning: Silver is not secure so that you need to use other silent OT. **)
- Yang, Kang, Chenkai Weng, Xiao Lan, Jiang Zhang, and Xiao Wang. Ferret: Fast Extension for Correlated OT with Small Communication. CCS 2020, ACM, pp. 1607-1626.
- Orrù, Michele, Emmanuela Orsini, and Peter Scholl. Actively Secure 1-out-of-N OT Extension with Application to Private Set Intersection. CT-RSA 2017, Springer International Publishing, pp. 381-396.
- Keller, Marcel, Emmanuela Orsini, and Peter Scholl. Actively Secure OT Extension with Pptimal Overhead. CRYPTO 2015, Part I, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 724-741. Note that we fix the malicious security flaw introduced in the paper "SoftSpokenOT: Communication – Computation Tradeoffs in OT Extension (CRYPTO 2022)".
- Kolesnikov, Vladimir, and Ranjit Kumaresan. Improved OT Extension for Transferring Short Secrets. CRYPTO 2013, Part II, Springer Berlin Heidelberg, pp. 54-70.
- Asharov, Gilad, Yehuda Lindell, Thomas Schneider, and Michael Zohner. More Efficient Oblivious Transfer and Extensions for Faster Secure Computation. CCS 2013, ACM, pp. 535-548.
- Ishai, Yuval, Joe Kilian, Kobbi Nissim, and Erez Petrank. Extending Oblivious Transfers Efficiently. CRYPTO 2003, Springer Berlin Heidelberg, pp. 145-161.
- Keller, Marcel, Emmanuela Orsini, and Peter Scholl. MASCOT: Faster Malicious Arithmetic Secure Computation with Oblivious Transfer. CCS 2016, pp. 830-842.
- Weng, Chenkai, Kang Yang, Jonathan Katz, and Xiao Wang. Wolverine: Fast, Scalable, and Communication-Efficient Zero-Knowledge Proofs for Boolean and Arithmetic Circuits. S\&P 2021, IEEE, pp. 1074-1091.

### Multiplication Triple

- Rathee, Deevashwer, Thomas Schneider, and K. K. Shukla. Improved Multiplication Triple Generation over Rings via RLWE-based AHE. CANS 2019, Springer International Publishing, pp. 347-359.
- Demmler, Daniel, Thomas Schneider, and Michael Zohner. ABY - A Framework for Efficient Mixed-protocol Secure Two-party Computation. NDSS 2015.

### Oblivious Permutation Networks

- Peceny, Stanislav, Srinivasan Raghuraman, Peter Rindal, and Harshal Shah. Efficient Permutation Correlations and Batched Random Access for Two-Party Computation. Cryptology ePrint Archive (2024).
- Garimella, Gayathri, Payman Mohassel, Mike Rosulek, Saeed Sadeghian, and Jaspal Singh. Private Set Operations from Oblivious Switching. PKC 2021, Cham: Springer International Publishing, pp. 591-617. (**This paper introduced an improved version of [MS13]**)
- Chase, Melissa, Esha Ghosh, and Oxana Poburinnaya. Secret-shared shuffle. ASIACRYPT 2020, pp. 342-372.
- Mohassel, Payman, and Saeed Sadeghian. "How to hide circuits in MPC an efficient framework for private function evaluation. EUROCRYPT 2013, pp. 557-574.

## Private Information Retrieval

We implement some Private Information Retrieval (PIR) protocols. We note that there are parameter adjustments and re-implementations for some protocols so that the results can run in a more robust manner. All protocols are implemented based on [SEAL](https://github.com/microsoft/SEAL) (instead of [NFLlib](https://github.com/quarkslab/NFLlib)).

### Index PIR

We re-implement many index PIR schemes in `mpc4j-s2pc-pir`. We note that we learned a lot from their original implementations.

- Ahmad, Ishtiyaque, Yuntian Yang, Divyakant Agrawal, Amr El Abbadi, and Trinabh Gupta. Addra: Metadata-private Voice Communication over Fully Untrusted Infrastructure. OSDI 2021.
- Mughees, Muhammad Haris, Hao Chen, and Ling Ren. OnionPIR: Response Efficient Single-server PIR. CCS 2021, ACM, pp. 2292-2306.
- Angel, Sebastian, Hao Chen, Kim Laine, and Srinath Setty. PIR with Compressed Queries and Amortized Query Processing. S\&P 2018, IEEE, pp. 962-979.
- Melchor, Carlos Aguilar, Joris Barrier, Laurent Fousse, and Marc-Olivier Killijian. XPIR: Private Information Retrieval for Everyone. PETS 2016, pp. 155-174.
- Mughees, Muhammad Haris, and Ling Ren. Vectorized Batch Private Information Retrieval. S\&P 2023, IEEE.
- Ali, Asra, Tancrede Lepoint, Sarvar Patel, Mariana Raykova, Phillipp Schoppmann, Karn Seth, and Kevin Yeo. Communication–computation Trade-offs in PIR. USENIX Security 2021, pp. 1811-1828.
- Mahdavi, Rasoul Akhavan, and Florian Kerschbaum. Constant-weight PIR: Single-round Keyword PIR via Constant-weight Equality Operators. USENIX Security 2022, pp. 1723-1740.
- Henzinger, Alexandra, Matthew M. Hong, Henry Corrigan-Gibbs, Sarah Meiklejohn, and Vinod Vaikuntanathan. One Server for the Price of Two: Simple and Fast Single-server Private Information Retrieval. USENIX Security 2023.
- Alex Davidson, Gonçalo Pestana, and Sofía Celi. FrodoPIR: Simple, Scalable, Single-server Private Information Retrieval. Proceedings on Privacy Enhancing Technologies (2023).

### Keyword PIR and Unbalanced PSI

We implement Keyword PIR (also known as Labeled PSI) in `mpc4j-s2pc-pir` and unbalanced PSI in `mpc4j-s2pc-pso`. Here we list other labeled PSI papers, e.g., schemes proposed in CCS 2018 and CCS 2017. We do not implement them since the scheme in CCS 2021 is strictly more efficient than others. We note that we learned a lot from their original implementations. See [APSI](https://github.com/microsoft/APSI) and [6857-private-categorization](https://github.com/aleksejspopovs/6857-private-categorization) for more details.

- Cong, Kelong, Radames Cruz Moreno, Mariana Botelho da Gama, Wei Dai, Ilia Iliashenko, Kim Laine, and Michael Rosenberg. Labeled PSI from Homomorphic Encryption with Reduced Computation and Communication. CCS 2021, ACM, pp. 1135-1150.
- Chen, Hao, Zhicong Huang, Kim Laine, and Peter Rindal. Labeled PSI from Fully Homomorphic Encryption with Malicious Security. CCS 2018, ACM, pp. 1223-1237.
- Chen, Hao, Kim Laine, and Peter Rindal. Fast Private Set Intersection from Homomorphic Encryption. CCS 2017, ACM, pp. 1243-1255.
- Ahmad, Ishtiyaque, Divyakant Agrawal, Amr El Abbadi, and Trinabh Gupta. Pantheon: Private Retrieval from Public Key-Value Store. VLDB 2022, pp. 643-656.
- Sofía Celi, and Alex Davidson. Call Me By My Name: Simple, Practical Private Information Retrieval for Keyword Queries. CCS 2024, pp. 4107-4121.

### Client-preprocessing PIR

- Zhou, Mingxun, Andrew Park, Elaine Shi, and Wenting Zheng. Piano: Extremely Simple, Single-Server PIR with Sublinear Server Computation. S\&P 2024.
- Mughees, Muhammad Haris, I. Sun, and Ling Ren. Simple and Practical Amortized Sublinear Private Information Retrieval. Cryptology ePrint Archive (2023).
- Celi, Sofía, and Alex Davidson. Call Me By My Name: Simple, Practical Private Information Retrieval for Keyword Queries. Cryptology ePrint Archive, Paper 2024/92.
- Hoover, Alexander, Sarvar Patel, Giuseppe Persiano, and Kevin Yeo. Plinko: Single-Server PIR with Efficient Updates via Invertible PRFs. Cryptology ePrint Archive, Paper 2024/318.

## Private Set Operation

We implement Private Set Operations in `mpc4j-s2pc-pso` and `mpc4j-s2pc-pjc`.

### Oblivious PRF and Private Set Intersection

- Alamati, Navid, Guru-Vamsi Policharla, Srinivasan Raghuraman, and Peter Rindal. Improved Alternating-Moduli PRFs and Post-Quantum Signatures. CRYPTO 2024.
- Raghuraman, Srinivasan, and Peter Rindal. Blazing Fast PSI from Improved OKVS and Subfield VOLE. CCS 2022, pp. 2505-2517.
- Rindal, Peter, and Phillipp Schoppmann. VOLE-PSI: Fast OPRF and Circuit-PSI from Vector-OLE. EUROCRYPT 2021, Cham: Springer International Publishing, pp. 901-930.
- Rosulek, Mike, and Ni Trieu. Compact and Malicious Private Set Intersection for Small Sets. CCS 2021, pp. 1166-1181.
- Pinkas, Benny, Mike Rosulek, Ni Trieu, and Avishay Yanai. PSI from PaXoS: Fast, Malicious Private Set Intersection. EUROCRYPT 2020, Cham: Springer International Publishing, pp. 739-767.
- Chase, Melissa, and Peihan Miao. Private Set Intersection in the Internet Setting from Lightweight Oblivious PRF. CRYPTO 2020, Part III, Springer International Publishing, pp. 34-63.
- Pinkas, Benny, Mike Rosulek, Ni Trieu, and Avishay Yanai. SpOT-light: Lightweight Private Set Intersection from Sparse OT Extension. CRYPTO 2019, Part III, Springer International Publishing, pp. 401-431.
- Resende, Amanda C. Davi, and Diego F. Aranha. Faster Unbalanced Private Set Intersection. FC 2018, Springer Berlin Heidelberg, pp. 203-221.
- Albrecht, Martin R., Christian Rechberger, Thomas Schneider, Tyge Tiessen, and Michael Zohner. Ciphers for MPC and FHE. EUROCRYPT 2015, Part I, Springer Berlin Heidelberg, pp. 430-454.
- Kolesnikov, Vladimir, Ranjit Kumaresan, Mike Rosulek, and Ni Trieu. Efficient Batched Oblivious PRF with Applications to Private Set Intersection. CCS 2016, ACM, pp. 818-829.
- Pinkas, Benny, Thomas Schneider, and Michael Zohner. Faster Private Set Intersection based on OT Extension. USENIX Security 2014, pp. 797-812.
- Dong, Changyu, Liqun Chen, and Zikai Wen. When Private Set Intersection Meets Big Data: an Efficient and Scalable Protocol. CCS 2013, pp. 789-800.
- (PSI version) Huberman, Bernardo A., Matt Franklin, and Tad Hogg. Enhancing Privacy and Trust in Electronic Communities. EC 1999, ACM, pp. 78-86.

### Circuit PSI

- Pinkas, Benny, Thomas Schneider, Oleksandr Tkachenko, and Avishay Yanai. Efficient Circuit-Based PSI with Linear Communication. EUROCRYPT 2019, Part III, Springer International Publishing, pp. 122-153.
- Chandran, Nishanth, Divya Gupta, and Akash Shah. Circuit-PSI with Linear Complexity via Relaxed Batch OPPRF. PETS 2022, no. 1, pp. 353-372.
- Son, Yongha, and Jinhyuck Jeong. PSI with computation or Circuit-PSI for Unbalanced Sets from Homomorphic Encryption.. AsiaCCS 2023, pp. 342-356. 2023.

### Private Set Union and Private ID

- Jia, Yanxue, Shi-Feng Sun, Hong-Sheng Zhou, Jiajun Du, and Dawu Gu. Shuffle-based Private Set Union: Faster and More Secure. USENIX Security 2022, pp. 2947-2964.
- Garimella, Gayathri, Payman Mohassel, Mike Rosulek, Saeed Sadeghian, and Jaspal Singh. Private Set Operations from Oblivious Switching. PKC 2021, Cham: Springer International Publishing, pp. 591-617.
- Kolesnikov, Vladimir, Mike Rosulek, Ni Trieu, and Xiao Wang. Scalable Private Set Union from Symmetric-key Techniques. ASIACRYPT 2019, Part II, Cham: Springer International Publishing, pp. 636-666.
- Buddhavarapu, Prasad, Andrew Knox, Payman Mohassel, Shubho Sengupta, Erik Taubeneck, and Vlad Vlaskin. Private Matching for Compute. Cryptology ePrint Archive, Paper 2020/599.

- Tu, Binbin, Yu Chen, Qi Liu, and Cong Zhang. Fast Unbalanced Private Set Union from Fully Homomorphic Encryption. CCS 2023, pp. 2959-2973. 2023.

### PSI Cardinality

- (PSI Cardinality version) Huberman, Bernardo A., Matt Franklin, and Tad Hogg. Enhancing Privacy and Trust in Electronic Communities. EC 1999, ACM, pp. 78-86.
- De Cristofaro, Emiliano, Paolo Gasti, and Gene Tsudik. Fast and Private Computation of Cardinality of Set Intersection and Union. CANS 2012, pp. 218-231. Springer Berlin Heidelberg, 2012.

### Other PSO

- Kamara, Seny, Payman Mohassel, Mariana Raykova, and Saeed Sadeghian. Scaling Private Set Intersection to Billion-element Sets. FC 2014, pp. 195-215. Springer Berlin Heidelberg, 2014.

================================================
FILE: README.md
================================================
# mpc4j

## Introduction

Multi-Party Computation for Java (`mpc4j`) is an efficient and easy-to-use Secure Multi-Party Computation (MPC), Homomorphic Encryption (HE), and Differential Privacy (DP) library mainly written in Java.

`mpc4j` aims to provide an academic library for researchers to study and develop MPC/HE/DP in a unified manner. As `mpc4j` tries to provide state-of-the-art MPC/HE/DP implementations, researchers could leverage the library to have fair and quick comparisons between the new algorithms/protocols they proposed and existing ones.

We note that `mpc4j` is mainly focused on research and `mpc4j` assumes a very strong system model. Specifically, `mpc4j` assumes never-crash nodes with a fully synchronized network. In practice, crash-recovery nodes with a partially synchronized network would be a reasonable system model. Aside from the system model, `mpc4j` tries to integrate tools that are suitable to be used in the production environment. We emphasize that additional engineering problems need to be solved if you want to develop your own MPC/DP applications. A reasonable solution would be to implement communication APIs on your own, develop protocols by calling tools in `mpc4j`, and referring protocol implementations in `mpc4j` as a prototype.

Since version 1.1.3, `mpc4j` no longer uses [Javallier](https://github.com/n1analytics/javallier) to support partially homomorphic encryption, and [JNA GMP project](https://github.com/square/jna-gmp) to support faster `BigInteger` exponent operations. The reason is that we did test on MacBook M3 and found unknown bugs when invoking `libgmp` on MacBook M3. Since we upgraded JDK to 17, and we can use [GraalVM](https://www.graalvm.org/) to obtain more efficient operations on JDK with the help of AoT, we can directly use pure JDK implementations for `BigInteger`. Therefore, we remove these two modulus in `mpc4j`.

Since version 1.1.3, `mpc4j` leverages [Vector API](https://openjdk.org/jeps/448) to speedup performance using Java SIMD. One needs to **use JDK 17 (or later)** to develop, compile and run `mpc4j`. We note that this means you may also need to upgrade the underlying IDE (e.g., Intellij IDEA) to new versions. We further found that [Foreign Function and Memory API (FFM)](https://docs.oracle.com/en/java/javase/22/core/foreign-function-and-memory-api.html) can help us to do conversions between different primitives more efficiently. This requires using JDK 21. However, we need to consider running `mpc4j` on Android platforms for specific applications, but current Android platform only supports JDK 17. See [Java versions in Android builds](https://developer.android.com/build/jdks) for details (access date: Oct. 11, 2024). Therefore, we have not introduced FFM into `mpc4j` and force our JDK version as 17.

### Features

`mpc4j` has the following features:

- **`aarch64` support**: `mpc4j` can run on both `x86_64` and `aarch64`. Researchers can develop and test protocols on Macbook M1 (`aarch64`) and then run experiments on Linux OS (`x86_64`). 
- **SM series support**: Developers may want to use SM series algorithms (SM2 for public-key operations, SM3 for hashing, and SM4 for block cipher operations) instead of regular algorithms (like secp256k1 for public-key operations, SHA256 for hashing, and AES for block cipher operations). Also, the SM series algorithms are accepted by ISO/IES, so it may be necessary to support them under MPC settings. `mpc4j` leverages [Bouncy Castle](https://www.bouncycastle.org/java.html) to support SM series algorithms.
- **Pure-Java support**: We try our best to provide alternative cryptographic tool implementations using pure Java so that researchers can directly start their implementation without worrying about installing C/C++ libraries.

### Contact

`mpc4j` is mainly developed by Weiran Liu. Feel free to contact me at [liuweiran900217@gmail.com](mailto:liuweiran900217@gmail.com). 

- The submodules involving Fully Homomorphic Encryption (FHE) were mainly developed by Anon\_Trent (an anonymous author), [Liqiang Peng](mailto:shelleyatsun@gmail.com) and [Qixian Zhou](https://github.com/qxzhou1010).
- The submodules involving secure 2PC and 3PC are mainly developed by [Feng Han](mailto:hf1996@mail.ustc.edu.cn).
- The submodules involving Vector Oblivious Linear Evaluation (VOLE) are mainly developed by [Hanwen Feng](https://hanwen-feng.github.io/).
- The components of TFHE are developed by [Zhen Gu](mailto:thuguz15@gmail.com) of Computing Technology Lab (CTL) in Damo, Alibaba. The rest of their TFHE implementation by extending SEAL will be later released in their FHE library.
- The FourQ-related implementations and mobile PSI-friendly OPRF (i.e., single-query OPRF) are developed by [Qixian Zhou](https://github.com/qxzhou1010).
- The submodules for circuits and operations based on the Boolean/arithmetic circuits are mainly developed by [Li Peng](mailto:pengli_email@163.com) and [Feng Han](mailto:hf1996@mail.ustc.edu.cn).

### Who Uses `mpc4j`

If your project uses `mpc4j` and you do not mind it appearing here, don't hesitate to get in touch with me.

- [DataTrust](https://dp.alibaba.com/product/datatrust) is powered by `mpc4j`. 
- The paper ["Scalable Multi-Party Private Set Union from Multi-query Secret-shared Private membership Test"](https://eprint.iacr.org/2023/1413.pdf) was accepted by AISACRYPT 2023. We thank Xiang Liu for using LowMC parameters in `mpc4j`.
- The paper ["Scalable and Adaptively Secure Any-Trust Distributed Key Generation and All-hands Checkpointing"](https://eprint.iacr.org/2023/1773.pdf) was accepted by CCS 2024. We thank [Hanwen Feng](https://hanwen-feng.github.io/) to use `mpc4j` for developing their prototypes.

## Academic Implementations

## Some Implementations of our Works

If you want to test and evaluate our protocol implementations, compile and run the corresponding jar file with the config file. Since version 1.1.2, if you want to run implementations related to PSU in the package `mpc4j-s2pc-pso`, you can first find example config files located in `conf/psu` in `mpc4j-s2pc-pso`, and then run `java -jar mpc4j-s2pc-pso-X.X.X-jar-with-dependencies.jar conf_file_name.txt server` and `java -jar mpc4j-s2pc-pso-X.X.X-jar-with-dependencies.jar conf_file_name.txt client` separately on two platforms with direct network connections (using the network channel assigned in config files) or on two terminals in one platform (using local network 127.0.0.1). Note that **you need first to run the server and then run the client.** The server and the client implicitly synchronize before running the protocol, and the first step is the client to send something like "hello" to the server. If the server is offline at that time, the program will get stuck. Since version 1.1.2, we move all example configuration files in `test/resources` for the corresponding modules.

- Our paper "Charge Your Clients: Payable Secure Computation and Its Applications" was accepted to IEEE Transactions on Information Forensics \& Security. Submodule `mpc4j-work-payable` contains the implementations of our constructions.
- Our paper ["Femur: A Flexible Framework for Fast and Secure Querying from Public Key-Value Store"](https://arxiv.org/abs/2503.05376) was accepted to SIGMOD 2025. Submodule `mpc4j-work-femur` contains the implementations of our constructions, both under `mpc4j`  architecture (see `femur-rpc`) and under the standard gRPC architecture (see `femur-common`, `femur-service-api`, and `femur-service`).
- Our paper ["Practical Keyword Private Information Retrieval from Key-to-Index Mappings"](https://eprint.iacr.org/2025/210) was accepted to USENIX Security 2025. Package `cppir/ks` in `mpc4j-s2pc-pir` contains the implementations of our three constructions shown in the paper and the baseline construction ChamaletPIR. See Artifact Evaluation document in `ae` for details.
- Our paper ["Unbalanced Private Set Union with Reduced Computation and Communication"](https://eprint.iacr.org/2024/1340) was accepted to ACM CCS 2024. Package `upsu` in `mpc4j-s2pc-upso` contains the implementation of this paper.
- Our paper ["Unbalanced Circuit-PSI from Oblivious Key-Value Retrieval"](https://eprint.iacr.org/2023/1636) was accepted to USENIX Security 2024. Package `ucpsi` in `mpc4j-s2pc-upso` contains the implementation of this paper.
- Our paper ["Private Set Operations from Multi-Query Reverse Private Membership Test"](https://eprint.iacr.org/2022/652.pdf) was accepted to PKC 2024. Aside from the C/C++ implementation in [Kunlun](https://github.com/yuchen1024/Kunlun), package `mqrpmt` in `mpc4j-s2pc-opf` contains the implementation of communicative OPRF. 
- Our paper ["Local Differentially Private Heavy Hitter Detection in Data Streams with Bounded Memory"](https://arxiv.org/pdf/2311.16062.pdf) was accepted to SIGMOD 2024. Package `heavyhitter` in `mpc4j-dp-service` contains the implementation of this paper.
- Our paper ["Efficient Private Multiset ID Protocols"](https://eprint.iacr.org/2023/986.pdf) was accepted to ICICS 2023. Package `pmid` in `mpc4j-s2pc-pso` contains the implementation of this paper.
- Our paper ["Linear Private Set Union from Multi-Query Reverse Private Membership Test"](https://eprint.iacr.org/2022/358.pdf) was accepted to USENIX Security 2023. Package `psu` in `mpc4j-s2pc-pso` contains the implementation of this paper.
- Our paper ["OpBoost: A Vertical Federated Tree Boosting Framework Based on Order-Preserving Desensitization"](https://arxiv.org/abs/2210.01318) was accepted to VLDB 2023. Module `mpc4j-sml-opboost` contains the implementation of this paper.
- Our paper "Sketch-based Secure Query Processing for Streaming Data" was accepted by SIGMOD 2026, and the final version will be made available later. Module `mpc4j-work-db-sketch` contains the implementation of this paper.
- Our paper ["Concretely Efficient Correlated Oblivious Permutation"](https://eprint.iacr.org/2025/449) was accepted by ASIACCS 2026. Package `pcg/osn` in Module `mpc4j-s2pc-aby` contains the implementation of this paper.

## Some Implementations of Existing Works

`mpc4j` contains some implementations of existing works. See `PAPERS.md` for more details.

## References

`mpc4j` includes some implementation ideas and codes from the following open-source libraries.

### Included Libraries

Here are some libraries that are included in `mpc4j`.

- [smile](https://github.com/haifengl/smile): A fast and comprehensive machine learning, NLP, linear algebra, graph, interpolation, and visualization system in Java and Scala. We understand many details of implementing machine learning tasks from this library. We also introduce some codes into `mpc4j` for the dataset management and our privacy-preserving federated GBDT implementation. See packages `edu.alibaba.mpc4j.common.data` in `mpc4j-common-data` and package `edu.alibaba.mpc4j.sml.smile` in `mpc4j-sml-opboost` for details. Note that we introduce source codes that are released only under [the GNU Lesser General Public License v3.0 (LGPLv3)](https://www.gnu.org/licenses/lgpl-3.0.en.html).
- [Bouncy Castle](https://www.bouncycastle.org/java.html): A Java implementation of cryptographic algorithms, developed by the Legion of the Bouncy Castle, a registered Australian Charity. We understand many details of how to efficiently implement cryptographic algorithms using Java. We introduce its [X25519](https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/math/ec/rfc7748/X25519.java) and [Ed25519](https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/math/ec/rfc8032/Ed25519.java) implementations in `mpc4j` to support efficient Elliptic Curve Cryptographic (ECC) operations. See package `edu.alibaba.mpc4j.common.tool.crypto.ecc.bc` in `mpc4j-common-tool` for details.
- [Rings](https://rings.readthedocs.io): An efficient, lightweight library for commutative algebra. We understand how to efficiently do algebra operations from this library. We wrap its polynomial interpolation implementations in `mpc4j`. See package `edu.alibaba.mpc4j.common.tool.polynomial` in `mpc4j-common-tool` for details. We also provide `JdkIntegersZp` to implement operations in $\mathbb{Z}_p$ purely using JDK. See `JdkIntegersZp` in `mpc4j-common-tool` for details.
- [blake2](https://github.com/BLAKE2/BLAKE2): Faster cryptographic hash function implementations. We introduce its original implementations and compare the efficiency with Java counterparts provided by [Bouncy Castle](https://www.bouncycastle.org/java.html) and other hash functions (e.g., [blake3](https://github.com/BLAKE3-team/BLAKE3)). See `crypto/blake2` in `mpc4j-native-tool` for details.
- [blake3](https://github.com/BLAKE3-team/BLAKE3): Much faster cryptographic hash function implementations. We introduce its original implementations and compare the efficiency with Java counterparts provided by [Bouncy Castle](https://www.bouncycastle.org/java.html) and other hash functions (e.g., [blake2](https://github.com/BLAKE2/BLAKE2)). See `crypto/blake3` in `mpc4j-native-tool` for details.
- [emp-toolkit](https://github.com/emp-toolkit): Efficient bit-matrix transpose (See `bit_matrix_trans` in `mpc4j-native-tool`), AES-NI implementations (See `crypto/aes.h` in `mpc4j-native-tool`), efficient $GF(2^\kappa)$ operations (See `gf2k` in `mpc4j-native-tool`).
- [KyberJCE](https://github.com/fisherstevenk/kyberJCE): Kyber is an IND-CCA2-secure key encapsulation mechanism (KEM), whose security is based on the hardness of solving the learning-with-errors (LWE) problem over module lattices. KyberJCE is a pure-Java implementation of Kyber. We introduce its Kyber implementation in `mpc4j` for supporting post-quantum secure oblivious transfer. See `crypto/kyber` in `mpc4j-native-tool` for details.
- [xgboost-predictor](https://github.com/h2oai/xgboost-predictor): Pure Java implementation of [XGBoost](https://github.com/dmlc/xgboost/) predictor for online prediction tasks. This work is released under the [Apache Public License 2.0](http://www.apache.org/licenses/LICENSE-2.0). We understand the format of the XGBoost model from this library. We also introduce some codes in `mpc4j` for our privacy-preserving federated XGBoost implementation. See packages `ai.h2o.algos.tree` and `biz.k11i.xgboost` in `mpc4j-sml-opboost` for details.
- [curve25519-elisabeth](https://github.com/cryptography-cafe/curve25519-elisabeth): A pure-Java implementation of group operations on Curve25519. We introduce its ED25519 and [Ristretto](https://ristretto.group/) implementation in `mpc4j `. See package `crypto/ecc/cafe` for details.
- [FourQlib](https://github.com/microsoft/FourQlib): A library that implements essential elliptic curve and cryptographic functions based on FourQ, a high-security, high-performance elliptic curve that targets the 128-bit security level. We rewrite `makefile` so that now FourQ can run on MacBook.
- [fastfilter_java](https://github.com/FastFilter/fastfilter_java): A library that implements Fast Approximate Membership Filters in Java. It includes XOR binary fuse filter, which is used in Chamalet PIR described in the paper "Call Me By My Name : Simple , Practical Private Information Retrieval for Keyword Queries" (ACM CCS 2024). We import its source code and make several changes. Access date: Jul. 25, 2024. 
- [hppc](https://github.com/carrotsearch/hppc): Collections of primitive types (maps, sets, stacks, lists) with open internals and an API twist. The branch `c9497dfabff240787aa0f5ac7a8f4ad70117ea72` includes pure-Java implementation of [PGM-Index](https://pgm.di.unipi.it/">https://pgm.di.unipi.it/). We import its source code and make several changes. Access date: Jul. 28, 2024.

### Inspired Libraries

Here are some libraries that inspire our implementations.

- [mobile_psi_cpp](https://github.com/contact-discovery/mobile_psi_cpp): A C++ library implementing several OPRF protocols and using them for Private Set Intersection. We introduce its LowMC parameters and encryption implementations in `mpc4j`. See `edu.alibaba.mpc4j.common.tool.crypto.prp.JdkBytesLowMcPrp` and `edu.alibaba.mpc4j.common.tool.crypto.prp.JdkLongsLowMcPrp` in `mpc4j-common-tool` for details. We also introduce its Cuckoo Filter optimizations in `mpc4j`.
- [emp-toolkit](https://github.com/emp-toolkit): We follow the implementation of the Silent OT protocol presented in the paper "Ferret: Fast Extension for coRRElated oT with Small Communication," accepted at [CCS 2020](https://eprint.iacr.org/2020/924.pdf) (See `cot` in `mpc4j-s2pc-pcg`).
- [Kunlun](https://github.com/yuchen1024/Kunlun): A C++ wrapper for OpenSSL, making it handy to use without worrying about cumbersome memory management and memorizing complex interfaces. Based on this wrapper, Kunlun builds an efficient and modular crypto library. We introduce its OpenSSL wrapper for Elliptic Curve and the Window Method implementation in `mpc4j`, see `ecc_openssl` in `mpc4j-native-tool` for details. 
- [PSI-analytics](https://github.com/osu-crypto/PSI-analytics): The implementation of the protocols presented in the paper "Private Set Operations from Oblivious Switching," accepted at [PKC 2021](https://eprint.iacr.org/2021/243.pdf). We introduce its switching network implementations in `mpc4j`. See package `benes_network` in `mpc4j-native-tool` for details.
- [Diffprivlib](https://github.com/IBM/differential-privacy-library): A general-purpose library for experimenting with, investigating, and developing applications in differential privacy. We understand how to organize source codes for implementing differential privacy mechanisms. See `mpc4j-dp-cdp` for details.
- [b2_exponential_mchanism](https://github.com/cilvento/b2_exponential_mechanism): An exponential mechanism implementation with base-2 differential privacy. We re-implement the base-2 exponential mechanism in `mpc4j`. See package `edu.alibaba.mpc4j.dp.cdp.nomial` for details.
- [libOTe](https://github.com/osu-crypto/libOTe): Implementations for many Oblivious Transfer (OT) protocols, especially the Silent OT protocols (See package `cot` in `mpc4j-s2pc-pcg`).
- [PSU](https://github.com/osu-crypto/PSU): The implementation of the paper "Scalable Private Set Union from Symmetric-Key Techniques," published in [ASIACRYPT 2019](https://eprint.iacr.org/2019/776.pdf). We introduce its fast polynomial interpolation implementations in `mpc4j`. See package `ntl_poly` in `mpc4j-native-tool` for details. The PSU implementation is in package `psu` of `mpc4j-s2pc-pso`.
- [PSU](https://github.com/dujiajun/PSU): The implementation of the paper "Shuffle-based Private Set Union: Faster and More," published in [USENIX Security 2022](https://eprint.iacr.org/2022/157.pdf). We introduce the idea of how to concurrently run the Oblivious Switching Network (OSN) in `mpc4j`. See package `psu` in `mpc4j-s2pc-pso` for details.
- [SpOT-PSI](https://github.com/osu-crypto/SpOT-PSI): The implementation of the paper "SpOT-Light: Lightweight Private Set Intersection from Sparse OT Extension," published in [CRYPTO 2019](https://eprint.iacr.org/2019/634.pdf). We introduce many ideas for fast polynomial interpolations in `mpc4j`. See package `polynomial` in `mpc4j-common-tool` for details.
- [OPRF-PSI](https://github.com/peihanmiao/OPRF-PSI): The implementation of the paper "Private Set Intersection in the Internet Setting From Lightweight Oblivious PRF," published in [CRYPTO 2020](https://eprint.iacr.org/2020/729.pdf). We introduce its OPRF implementations in `mpc4j`. See `oprf` in `mpc4j-s2pc-pso` for details.
- [APSI](https://github.com/microsoft/APSI): The implementation of the paper "Labeled PSI from Homomorphic Encryption with Reduced Computation and Communication," published in [CCS 2021](https://eprint.iacr.org/2021/1116.pdf). For its source code, we understand how to use the Fully Homomorphic Encryption (FHE) library [SEAL](https://github.com/microsoft/SEAL). Most of the codes for Unbalanced Private Set Intersection (UPSI) are partially from ASPI. We also adapt the encoding part of [6857-private-categorization](https://github.com/aleksejspopovs/6857-private-categorization) to support arbitrary bit-length elements. See `mpc4j-native-fhe` and `upsi` in `mpc-s2pc-pso` for details.
- [MiniPSI](https://github.com/osu-crypto/MiniPSI): The implementation of the paper "Compact and Malicious Private Set Intersection for Small Sets," published in [CCS 2021](https://eprint.iacr.org/2021/1159). We understand how to implement Elliagtor encoding/decoding functions on Curve25519. See package `crypto/ecc/bc/X25519BcByteMulElligatorEcc` in `mpc4j-common-tool` for details.
- [Ed25519](https://github.com/agl/ed25519/tree/5312a61534124124185d41f09206b9fef1d88403): Ed25519 in for Go. We understand how to implement Elliagtor in Ed25519. See package `crypto/ecc/bc/X25519BcByteMulElligatorEcc` in `mpc4j-common-tool` for details.
- [dgs](https://github.com/malb/dgs): Discrete Gaussians over the Integers. We learn many ways of discrete Gaussian sampling. See package `common/sampler/integral/gaussian` in `mpc4j-common-sampler` for details.
- [Pure-DP](https://github.com/Samuel-Maddock/pure-LDP): a Python package that provides simple implementations of various state-of-the-art LDP algorithms (both Frequency Oracles and Heavy Hitters) with the main goal of providing a single, simple interface to benchmark and experiment with these algorithms. We learn many efficient LDP implementation details.
- [PantheonPIR](https://github.com/ishtiyaque/Pantheon), [SimplePIR](https://github.com/ahenzinger/simplepir), [MulPIR](https://github.com/OpenMined/PIR), [Constant-weight PIR](https://github.com/rasoulam/constant-weight-pir), [FastPIR](https://github.com/ishtiyaque/FastPIR), [Onion-PIR](https://github.com/mhmughees/Onion-PIR), [SealPIR,](https://github.com/microsoft/SealPIR) and [XPIR](https://github.com/XPIR-team/XPIR): We understand many details for implementing PIR schemes. We re-implement some protocols based on [SEAL](https://github.com/microsoft/SEAL) instead of [NFLlib](https://github.com/quarkslab/NFLlib), since we found we cannot compile NFLlib on Macbook M1 with `aarch64`.
- [VOLE-PSI](https://github.com/Visa-Research/volepsi): VOLE-PSI implements the protocols described in "VOLE-PSI: Fast OPRF and Circuit-PSI from Vector-OLE" and "Blazing Fast PSI from Improved OKVS and Subfield VOLE". We understand how to implement "Blazing fast OKVS" and many details of how to refine our implementation.
- [Piano-PIR](https://github.com/pianopir/Piano-PIR): This is a prototype implementation of the Piano private information retrieval(PIR) algorithm that allows a client to access a database without the server knowing the querying index. We understand many details of the implementation.
- [jope](https://github.com/ssavvides/jope): A POC implementation of Order-preserving encryption in Java based on the work described in: "Order-Preserving Symmetric Encryption", Alexandra Boldyreva, Nathan Chenette, Younho Lee and Adam O’Neill. Based on its code, we introduce and implement OPE in `mpc4j`.
- [incpir](https://github.com/eniac/incpir/tree/main/inc-pir): This is the implementation of the "Incremental Offline/Online PIR" described in the paper "Incremental Offline/Online PIR" (USENIX Security 2022). We understand how to implement small-domain PRG from [adprp.cpp](https://github.com/eniac/incpir/blob/main/inc-pir/src/adprp.cpp). Access date: Oct. 11, 2024.
- [S3PIR](https://github.com/renling/S3PIR): This is the implementation of the MIR scheme described in the paper "Simple and Practical Sublinear Private Information Retrieval Using Dummy Subsets" (ACM CCS 2024). We update several implementation details based on their implementation. Access date: Oct. 11, 2024.
- [GigaDORAM](https://github.com/Fannxy/GigaDORAM): This is the implementation of the 3-party Distributed ORAM (DORAM) protocol described in the paper "GigaDORAM: Breaking the Billion Address Barrier" (USENIX Security 2023). We understand how to generate Bristol Fashion MPC circuit format from [lowmc.py](https://github.com/Fannxy/GigaDORAM/blob/main/circuits/lowmc.py). We implement our circuit format generator by reading an assigned LowMC parameter file and obtain its corresponding circuit format. Access date: Mar. 9, 2025.

## Acknowledge

- We thank [Prof. Benny Pinkas](http://www.pinkas.net/) and [Dr. Avishay Yanai](https://www.yanai.io/) for many discussions on implementing Private Set Intersection protocols. They also greatly help our Java implementations for Oblivious Key-Value Storage (OKVS) presented in the paper "Oblivious Key-Value Stores and Amplification for Private Set Intersection," accepted at [CRYPTO 2021](https://eprint.iacr.org/2021/883.pdf). See package `okve/okvs` in `mpc4j-common-tool` for more details. 
- We thank [Dr. Stanislav Poslavsky](https://www.linkedin.com/in/stanislav-poslavsky-231311163) and [Prof. Benny Pinkas](http://www.pinkas.net/) for many discussions on implementations of fast polynomial interpolations when we try to implement the PSI protocol presented in the paper "SpOT-Light: Lightweight Private Set Intersection from Sparse OT Extension."
- We thank [Prof. Mike Rosulek](https://web.engr.oregonstate.edu/~rosulekm/) for the discussions about the implementation of Private Set Union (PSU). Their implementation for the paper "Private Set Operations from Oblivious Switching" brings much help for us to understand how to implement PSU. 
- We thank [Prof. Xiao Wang](https://wangxiao1254.github.io/) for discussions about fast bit-matrix transpose. From the discussion, we understand that the basic idea of fast bit-matrix transpose is from the blog [The Full SSE2 Bit Matrix Transpose Routine](https://mischasan.wordpress.com/2011/10/03/the-full-sse2-bit-matrix-transpose-routine/). He also helped me realize that there exists an efficient polynomial operation implementation in $GF(2^\kappa)$ introduced in [Intel Carry-Less Multiplication Instruction and its Usage for Computing the GCM Mode](https://www.intel.com/content/dam/develop/external/us/en/documents/clmul-wp-rev-2-02-2014-04-20.pdf). See package `galoisfield/gf2k` in `mpc4j-common-tool` for more details. 
- We thank [Prof. Peihan Miao](https://www.linkedin.com/in/peihan-miao-08919932/) for discussions about the implementation of the paper "Private Set Intersection in the Internet Setting From Lightweight Oblivious PRF." From the discussion, we understand there is a special case for the lightweight OPRF when $n = 1$. See package `oprf` in `mpc4j-s2pc-pso` for more details. 
- We thank [Prof. Yu Chen](https://yuchen1024.github.io/) for many discussions on various MPC protocols. Here we recommend his open-source library [Kunlun](https://github.com/yuchen1024/Kunlun), a modern crypto library. We thank [Minglang Dong](https://github.com/minglangdong) for her example codes about implementing [the Window Method](https://www.geeksforgeeks.org/window-sliding-technique/) for fixed-base multiplication in ECC. 
- We thank [Dr. Bolin Ding](https://www.bolin-ding.com/) for many discussions on introducing MPC into the database field. Here we recommend the open-source library [FederatedScope](https://federatedscope.io/), an easy-to-use federated learning package, from his team. 
- We thank anonymous USENIX Security 2023 Artifact Evaluation (AE) reviewers for many suggestions for the `mpc4j` documentation and for `mpc4j-native-tool`. These suggestions help us fix many memory leakage problems. Also, the comments help us remove many duplicate codes. 
- We thank [Dr. Kevin Yeo](https://sites.google.com/view/kevin-yeo/research) and [Dr. Joon Young Seo](https://www.linkedin.com/in/joon-young-seo-010aab82) of discussions on how to implement band matrix solvers used in "Near-Optimal Oblivious Key-Value Stores for Efficient PSI, PSU and Volume-Hiding Multi-Maps".

## License

This library is licensed under Apache License 2.0.

## Specifications

### C/C++ Modules

Most of the codes are in Java, except for very efficient implementations in C/C++. You need [OpenSSL](https://www.openssl.org/), [GMP](https://gmplib.org/), [NTL](https://libntl.org/), [libsodium](https://doc.libsodium.org/installation), and FourQ that we rewrite (in `mpc4j-native-fourq`) to compile `mpc4j-native-tool` and [SEAL](https://github.com/microsoft/SEAL) (version higher than 4.0.0) to compile `mpc4j-native-fhe`. Please see README.md in `mpc4j-native-fourq`, `mpc4j-native-cool` and `mpc4j-native-fhe` on how to install C/C++ dependencies.

After successfully installing C/C++ library `mpc4j-native-fourq` and obtaining the compiled C/C++ libraries (named `libmpc4j-native-tool` and `libmpc4j-native-fhe`, respectively), you need to assign the native library location when running `mpc4j` using `-Djava.library.path`.

### Tests

`mpc4j` has been tested on MAC (`x86_64` / `aarch64`), Ubuntu 20.04  (`x86_64` / `aarch64`), and CentOS 8 (`x86_64`). We welcome developers to do tests on other platforms. 

We note that you may need to run test cases in `mpc4j-s2pc-pir` separately, especially for test cases in `IndexPirTest` and `KwPirTest`. The reason is that PIR and related implementations heavily consume the main memory, and direct running all test cases may (automatically) involve frequent fullGC, introducing problems.

### Performances

We have received a lot of suggestions and some performance reports from users. We thank [Dr. Yongha Son](https://yonghaason.github.io/) for providing performance reports for Private Set Union (PSU) on his development platform (Intel Xeon 3.5GHz) under the **Unit Test**. The report results are formally shown in their paper ["Revisiting Shuffle-based Private Set Unions with Reduced Communication"](https://eprint.iacr.org/2024/1560.pdf). He reported that:

> Well, I tested other protocols, particularly [JSZ22 SFC](https://eprint.iacr.org/2022/157.pdf), [GMR21](https://eprint.iacr.org/2021/243.pdf), and [KRTW19](https://eprint.iacr.org/2019/776.pdf), from unit tests.
>
> - JSZ22 takes 4x faster time.
>
> - KRTW19 and GMR21 take 1.5x slower.
> - ZCL22 takes 2.5-3x slower time.
>
> than the reported numbers in ZCL22.

We have a deep discussion about the performance gap. Here are the following reasons:

1. In **Unit Test**, we use an optimized way of implementing JSZ22. Roughly speaking, we can use batched related-key OPRF proposed by [Kolesnikov et al.](https://eprint.iacr.org/2016/799.pdf) instead of the more general multi-point OPRF proposed by [Chase and Miao](https://eprint.iacr.org/2020/729.pdf) to speed up the underlying OPRF. The reason is that JSZ22 used cuckoo hash binning the input elements, suitable for related-key OPRF. See our paper ["Private Set Operations from Multi-Query Reverse Private Membership Test"](https://eprint.iacr.org/2022/652.pdf) for more details.
2. As far as we know, server-version CPUs (like Intel Xeon 3.5GHz) provide more efficient instructions than desktop-version CPUs (like Intel i9900k). Note that NTL and GMP would automatically detect the underlying platform to choose the most efficient way for their configurations. We **doubt** these instructions would help NTL and GMP libraries run faster. It seems that such efficient instructions would bring little help to ECC operations. As a comparison, Dr. Yongha Son ran `EccEfficiencyTest` on his platform. The result shows ECC operations on his platform with `asm` are much slower (about 5x) than on our Macbook M1 platform without `asm`.

We have to say that we underestimated the performance gap between different platforms. The performance comparison result also reflects that having fair comparisons for different protocols is very challenging. Aside from that, we still try to provide a unified library for trying to have a relatively fair comparison.

### Notes for Running on `aarch64` 

When using or developing `mpc4j` on `aarch64` systems (like MacBook M1),  you may get `java.lang.UnsatisfiedLinkError` with a description like "no mpc4j-native-tool / mpc4j-native-fhe in java.library.path", even if you correctly compile the native libraries and config the native library paths using `-Djava.library.path`. The reason is that **some Java Virtual Machines (JVM) with versions less than 17 do not fully support `aarch64`**. [JDK 17 Release Notes](https://www.oracle.com/java/technologies/javase/17-relnote-issues.html) stated that (In JEP 391: macOS / Aarch64 Port):

> macOS 11.0 now supports the AArch64 architecture. This JEP implements support for the macos-aarch64 platform in the JDK. One of the features added is support for the W^X (write xor execute) memory. It is enabled only for macos-aarch64 and can be extended to other platforms at some point. The JDK can be either cross-compiled on an Intel machine or compiled on an Apple M1-based machine.

We recommend using Java 17 (or higher versions) to run or develop `mpc4j` on `aarch64` systems. If you still want to use Java with versions less than 17, we test many JVMs and found that [Azul Zulu](https://www.azul.com/downloads/) fully supports `aarch64`.

### Notes for Errors on FourQlib

When you run `make test` for `mpc4j-native-fourq`, you possibly meet test failures. The reason is that the original [FourQlib](https://github.com/microsoft/FourQlib) have some unknown bugs when running on some platforms (but currently we do not know which platforms you may meet the bug). See [Issue #9](https://github.com/microsoft/FourQlib/issues/9) in FourQlib and [Issue #16](https://github.com/alibaba-edu/mpc4j/issues/16) in `mpc4j`.

Simply ignoring the error is OK, but many test cases in `mpc4j` would fail since `mpc4j` uses FourQ EC curve by default. You need to change the default EC curve from FourQ to ED25519 (also see [Issue #16](https://github.com/alibaba-edu/mpc4j/issues/16) in `mpc4j` for more details):

1. In module `mpc4j-common-tool`, find `ByteEccFactory` in package `edu.alibaba.mpc4j.common.tool.crypto.ecc`.
2. Find the function `public static ByteFullEcc createFullInstance(EnvType envType)`.
3. Change `return createFullInstance(ByteEccType.FOUR_Q);` to `return createFullInstance(ByteEccType.ED25519_SODIUM);`.

### Notes for RAPPOR Implementation in `mpc4j-dp-service`

RAPPOR implementation requires LASSO and Ridge regressions in the server side, for which we uses LASSO and Ridge regressions in [smile](https://github.com/haifengl/smile). We note that smile requires additional configurations to run LASSO and Ridge regressions.

> Some algorithms rely on BLAS and LAPACK (e.g. manifold learning, some clustering algorithms, Gaussian Process regression, MLP, etc.). To use these algorithms, you should include OpenBLAS for optimized matrix computation:
>
> ```
> libraryDependencies ++= Seq(
>       "org.bytedeco" % "javacpp"   % "1.5.8"        classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64" classifier "linux-arm64" classifier "linux-ppc64le" classifier "android-arm64" classifier "ios-arm64",
>       "org.bytedeco" % "openblas"  % "0.3.21-1.5.8" classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64" classifier "linux-arm64" classifier "linux-ppc64le" classifier "android-arm64" classifier "ios-arm64",
>       "org.bytedeco" % "arpack-ng" % "3.8.0-1.5.8"  classifier "macosx-x86_64" classifier "windows-x86_64" classifier "linux-x86_64" classifier "linux-arm64" classifier "linux-ppc64le"
>     )
> ```

To sucessfully run RAPPOR, one also needs to add dependencies in `pom.xml` of `mpc4j-dp-service`.

```xml
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>openblas</artifactId>
    <version>0.3.21-1.5.8</version>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacpp-platform</artifactId>
    <version>1.5.8</version>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>openblas-platform</artifactId>
    <version>0.3.21-1.5.8</version>
</dependency>
<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>arpack-ng-platform</artifactId>
    <version>3.8.0-1.5.8</version>
</dependency>
```

### Notes for Running PSO on Very Large Sets

`mpc4j` requires PSO to take `Set` as inputs. For PSO experiments, `mpc4j` uses `Set<ByteBuffer>` . However, when running PSO on very large sets, it is possible that `Set<ByteBuffer>` does not successfully contain the assigned number of elements, leading to unexpected Exceptions when running experiments. This happens with probability with the size of sets $n$ increases, especially when $n > 2^{20}$.

If you meet problems when running experiments for $n > 2^{20}$, you can simply try deleting files in the path `temp` and rerun experiments. We are trying to fix this bug in the next version.

## Development

We develop `mpc4j` using [Intellij IDEA](https://www.jetbrains.com/idea/) and [CLion](https://www.jetbrains.com/clion/). Here are some guidelines.

### Intellij IDEA Preferences

Please change the following Preferences before actual development:

1. Editor -> Code Style -> Java: Table size, Indent, Continuation indent are all **4**.
2. Editor -> Code Style -> Java -> Imports: select "**Insert imports for inner classes**".
3. Editor -> Inspections: select Java -> JVM languages, and select "**Serializable class without 'serialVersionUID'**". We note that all `PtoId` in `PtoDesc` instances are generated using serialVersionUID. When creating a new instance of `PtoDesc`, make it `implement Serializable` , follow the warning to generate a `serialVersionUID`, paste that ID to be `PtoId`, and delete `implement Serializable` and corresponding imports.
4. Plugins: Install and use "**Git Commit Template**" to write commit. If necessary, install and use "**Alibaba Java Coding Guidelines**" for unified code styles.

### Linking Native Libraries

After successfully installing `mpc4j-native-fourq`, compiling `mpc4j-native-tool` and `mpc4j-native-fhe`, you need to configure IDEA with the following procedures so that IDEA can link to these native libraries.

1. Open `Run->Edit Configurations...`
2. Open `Edit Configuration templates...`
3. Select `JUnit`.
4. Add the following command into `VM Options`. Note that **do not remove `-ea`**, which means enabling `assert` in unit tests. If so, some test cases (related to input verifications) would fail.

```text
-Djava.library.path=/YOUR_MPC4J_ABSOLUTE_PATH/mpc4j-native-tool/cmake-build-release:/YOUR_MPC4J_ABSOLUTE_PATH/mpc4j-native-fhe/cmake-build-release
```

### Demonstration

We thank [Qixian Zhou](https://github.com/qxzhou1010) for writing a guideline demonstrating configuring the development environment on macOS (x86_64). We believe this guideline can also be used for other platforms, e.g., macOS (M1), Ubuntu, and CentOS. Here are the steps:

1. Follow any guidelines to install JDK 17 and IntelliJ IDEA. If you successfully install JDK17, you can obtain similar information in the terminal when executing `java -version`.

2. Clone `mpc4j` source code using `git clone https://github.com/alibaba-edu/mpc4j.git`.

3. Follow the documentation in https://github.com/alibaba-edu/mpc4j/tree/main/mpc4j-native-tool to compile `mpc4j-native-tool`. If all steps are correct, you will see:

```text
[100%] Linking CXX shared library libmpc4j-native-tool.dylib
[100%] Built target mc4j-native-tool
```

4. Follow the documentation in https://github.com/alibaba-edu/mpc4j/tree/main/mpc4j-native-fhe to compile `mpc4j-native-tool`. If all steps are correct, you will see:

```
[100%] Linking CXX shared library libmpc4j-native-fhe.dylib
[100%] Built target mc4j-native-fhe
```

5. Using IntelliJ IDEA to open `mpc4j`.
6. Open `Run->Edit Configurations...`.

<img src="figures/macos_step_06.png" alt="macos_step_06" style="zoom: 33%;" />

7. Open `Edit Configuration templates...`.

<img src="figures/macos_step_07.png" alt="macos_step_06" style="zoom: 33%;" />

8. Select `JUnit`, and add the following command into `VM Options` (**Note that you must replace  `/YOUR_MPC4J_ABSOLUTE_PATH` with your own absolute path for `libmpc4j-native-tool.dylib` and `libmpc4j-native-fhe.dylib`**.):

```shell
-Djava.library.path=/YOUR_MPC4J_ABSOLUTE_PATH/mpc4j-native-tool/cmake-build-release:/YOUR_MPC4J_ABSOLUTE_PATH/mpc4j-native-fhe/cmake-build-release
```

<img src="figures/macos_step_08.png" alt="macos_step_06" style="zoom: 33%;" />

9. Now, you can run tests of any submodule by pressing the **Green Arrows** showing on the left of the source code in test packages. 

<img src="figures/macos_step_09.png" alt="macos_step_06" style="zoom: 33%;" />

## TODO List

### Possible Missions

- Translate JavaDoc and comments in English.
- More secure two-party computation (2PC) protocol implementations.
- More secure three-party computation (3PC) protocol implementations.
- More differentially private algorithms and protocols, especially for the Shuffle Model implementations of our paper ["Privacy Enhancement via Dummy Points in the Shuffle Model."](https://arxiv.org/abs/2009.13738)

### Impossible Missions, but We Will Try

- What about implementing ["Deep Learning with Differential Privacy"](https://arxiv.org/abs/1607.00133) and its following works using Java, e.g., based on [Deep Java Library](https://djl.ai/)?
- (Suggested by [Prof. Joe Near](https://www.uvm.edu/~jnear/)) What about implementing Distributed Noise Generation protocols, like ["Our Data, Ourselves: Privacy via Distributed Noise Generation"](https://link.springer.com/content/pdf/10.1007/11761679_29.pdf)?

================================================
FILE: ae/2025_USEC_Practical_Keyword_PIR_from_Key-to-Index_Mappings.md
================================================
# Artifact Evaluation for Practical Keyword Private Information Retrieval from Key-to-Index Mappings

The submodule `mpc4j-s2pc-pir` (located in `mpc4j/mpc4j-s2pc-pir/`) contains prototype implementations of several Private Information Retrieval (PIR) schemes, including schemes described in the paper "Practical Keyword Private Information Retrieval from Key-to-Index Mappings".

## Source Code Location

- `mpc4j-s2pc-pir/src/main/java/edu/alibaba/mpc4j/s2pc/pir/cppir/ks/simple`  contains the implementations of our three constructions: KPIR$^{\mathsf{kvs}}$ (all source codes start with `SimpleNaive`), KPIR$^{\mathsf{hash}}$ (all source codes start with `SimpleBin`), KPIR$^{\mathsf{index}}$ (all source codes start with `SimplePgm`).
- `mpc4j-s2pc-pir/src/main/java/edu/alibaba/mpc4j/s2pc/pir/cppir/ks/chalamet` contains the implementation of the baseline construction ChalametPIR introduced in the paper ["Call Me By My Name: Simple, Practical Private Information Retrieval for Keyword Queries"](https://eprint.iacr.org/2024/092) (CCS 2024).
- `mpc4j-s2pc-pir/src/test/java/edu/alibaba/mpc4j/s2pc/pir/cppir/ks/` contains unit tests of all client-preprocessing keyword PIR protocols. You can run these unit tests to test the functionalities of our three constructions and the baseline construction ChalametPIR.
- `mpc4j-s2pc-pir/src/test/resources/conf_single_cp_ks_pir_example.conf`  provides an example configuration file that is used for running performance results.

## Unit Tests

We highly recommand running unit tests using [IntellJ IDEA](https://www.jetbrains.com/idea/), the leading Java IDE. You can follow **Section Development** shown in `README.md` to config, compile, and run unit tests of `mpc4j` in IntelliJ IDEA. If you are familar with Java, you can alternatively download, compile and run unit tests with following steps.

1. Clone the repository: `git clone https://github.com/alibaba-edu/mpc4j.git`.
2. Go to the root path: `cd mpc4j`.
3. Package and install: `mvn package`.
4. Run unit tests in `mpc4j-s2pc-pir/src/test/java/edu/alibaba/mpc4j/s2pc/pir/cppir/ks/`. 

We note that `mpc4j-s2pc-pir` module includes several implementations of other PIR schemes. To successfully run all unit tests, you need to follow the guideline shown in `mpc4j-native-fhe/README.md`  to compile `mpc4j-native-fhe`, and specify the native library location using `-Djava.library.path`. See  **Section Development** shown in `README.md`. The implementations of our three constructions and the baseline construction ChalametPIR are purely based on Java. It is not necessary to compile `mpc4j-native-fhe` **if you only want to test these constructions**.

## Performance Tests

To reproduce the performance results shown in the paper, you need to generate the jar file by running `mvn package`, and run it with two progresses on a single machine, or two progresses on two machines connected by the network. You also need to create a config file with suitable parameters. The template is shown in `mpc4j-s2pc-pir/src/test/resources/conf_single_cp_ks_pir_example.conf`. An example is as follows. 

```text
# server information
server_name = server
server_ip = 192.168.1.1
server_port = 9002

# client information
client_name = client
client_ip = 192.168.1.2
client_port = 9003

# append string in the output file
append_string = example

# protocol type
pto_type = SINGLE_CP_KS_PIR

# protocol config
entry_bit_length = 256
server_log_set_size = 22,22,20,18
query_num = 100
parallel = false

# SingleCpKsPir name: SIMPLE_NAIVE, SIMPLE_BIN, PGM_INDEX, or CHALAMET
single_cp_ks_pir_pto_name = PGM_INDEX
```

 ### Run Server

```
java -jar mpc4j-s2pc-pir-1.1.3-jar-with-dependencies.jar CONFIG_FILE_NAME.conf server
```

### Run Client

Please wait for the server to show it is ready and then run the client.

```
java -jar mpc4j-s2pc-pir-1.1.3-jar-with-dependencies.jar CONFIG_FILE_NAME.conf client
```

### Get Results

The performance results are reported in files ending with `.output` in the `temp` path. We note that we report the memory usage in the paper. The tool for reporting the memory usage is [jol](https://openjdk.org/projects/code-tools/jol/), whose license is not compatible with our license. Therefore, we cannot include the memory usage report in the artificate evaluation. If you are familar with Java development, it would be relatively easy to mannually include related codes into our implementation and get the memory usage report. 


================================================
FILE: data/README.md
================================================
# Datasets

We run our schemes on several public datasets to verify the correctness and effectiveness of our works. This document provides detailed information for these datasets.

## Datasets for OpBoost

### Dataset for Correctness

All datasets used for correctness are from testcases used in [Smile (Statistical Machine Intelligence and Learning Engine)](https://haifengl.github.io/). Smile is a fast and comprehensive machine learning, NLP, linear algebra, graph, interpolation, and visualization system in Java and Scala. Please visit the official website and the [GitHub](https://github.com/haifengl/smile) of Simle for more information.

We thank the sufficient unit tests for Gradient descent Boosting Decision Tree (GBDT) provided in Smile. These unit tests demonstrate many special cases in GBDT training, helping us finding many bugs and problems to make our implementation more robust.

#### Preprocess

We preprocess all datasets for correctness verifications with the following principles:

- All nominal **features** are one-hot encoded. The column name for each of the nominal values is under the format `ColumnName_NominalName`. The nominal value for the one-hot encoded column is 0 and 1.
- All nominal **labels** (when data is for classification tasks) remain unchanged.
- The dataset is in `csv` format. The first row describes the column name. The row data is separated by comma (`,`). The `NULL` data is left blank.

Take the dataset [abalone-train](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/regression/abalone-train.data) as an example. We can find the dataset schema in [Abalone.java](https://github.com/haifengl/smile/blob/eb5f14eed4c0aa1474abdb1ef78f662f6dd87fea/base/src/test/java/smile/test/data/Abalone.java). The schema is printed as follows.

```text
[sex: byte nominal[F, M, I], length: double, diameter: double, height: double, whole weight: double, shucked weight: double, viscera weight: double, shell weight: double, rings: double]
```

The original dataset is as follows.

```text
M,0.455,0.365,0.095,0.514,0.2245,0.101,0.15,15
M,0.35,0.265,0.09,0.2255,0.0995,0.0485,0.07,7
F,0.53,0.42,0.135,0.677,0.2565,0.1415,0.21,9
M,0.44,0.365,0.125,0.516,0.2155,0.114,0.155,10
I,0.33,0.255,0.08,0.205,0.0895,0.0395,0.055,7
I,0.425,0.3,0.095,0.3515,0.141,0.0775,0.12,8
F,0.53,0.415,0.15,0.7775,0.237,0.1415,0.33,20
F,0.545,0.425,0.125,0.768,0.294,0.1495,0.26,16
M,0.475,0.37,0.125,0.5095,0.2165,0.1125,0.165,9
F,0.55,0.44,0.15,0.8945,0.3145,0.151,0.32,19
......
```

First, the feature `sex` in the dataset Abalone contains three nominal values: F, M, and I. We encode `sex` in the one-hot manner to have three columns `sex_F`, `sex_M`, `sex_I`. For the row that has `sex` value `F`, we let `sex_F` be 1, while setting `sex_M` and `sex_I` to be 0. Then, we add a header row describing the column name. Finally, we save the dataset in `csv` format.

Since the dataset [abalone-train](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/regression/abalone-train.data) is used for the regression task, we place it in the dictionary `regression/abalone/`. The re-formatted dataset is as follows.

```text
sex_F,sex_M,sex_I,length,diameter,height,whole weight,shucked weight,viscera weight,shell weight,rings
0,1,0,0.455,0.365,0.095,0.514,0.2245,0.101,0.15,15
0,1,0,0.35,0.265,0.09,0.2255,0.0995,0.0485,0.07,7
1,0,0,0.53,0.42,0.135,0.677,0.2565,0.1415,0.21,9
0,1,0,0.44,0.365,0.125,0.516,0.2155,0.114,0.155,10
0,0,1,0.33,0.255,0.08,0.205,0.0895,0.0395,0.055,7
0,0,1,0.425,0.3,0.095,0.3515,0.141,0.0775,0.12,8
1,0,0,0.53,0.415,0.15,0.7775,0.237,0.1415,0.33,20
1,0,0,0.545,0.425,0.125,0.768,0.294,0.1495,0.26,16
0,1,0,0.475,0.37,0.125,0.5095,0.2165,0.1125,0.165,9
1,0,0,0.55,0.44,0.15,0.8945,0.3145,0.151,0.32,19
......
```

#### Regression: CPU

**This dataset is very small, and all features are numeric. This dataset is the Basic Verification Test (BVT) case.** 

The dataset is downloaded from [cpu.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/cpu.arff). The description is contained in the original file:

```text
As used by Kilpatrick, D. & Cameron-Jones, M. (1998). Numeric prediction using instance-based learning with encoding length selection. In Progress in Connectionist-Based Information Systems. Singapore: Springer-Verlag.

Deleted "vendor" attribute to make data consistent with what we used in the data mining book.
```

The schema is as follows, in which the label is `class`.

```text
[MYCT: float, MMIN: float, MMAX: float, CACH: float, CHMIN: float, CHMAX: float, class: float]
```

#### Regression: Abalone

**This dataset contains both numeric and nominal columns.** 

The train and the test datasets are downloaded respectively from [abalone-train.data](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/regression/abalone-train.data) and [abalone-test.data](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/regression/abalone-test.data). The schema is as follows, in which the label is `rings`.

```text
[sex: byte nominal[F, M, I], length: double, diameter: double, height: double, whole weight: double, shucked weight: double, viscera weight: double, shell weight: double, rings: double]
```

#### Regression: AutoMPG 

**This dataset contains both numeric and nominal columns and with missing values represented by `?`.** 

In the original data file, the missing values are set as `?`. We replace `?` to blank. The nominal columns `cylinders`, `model` and `origin` contain many nominal values and these values do not start from 0.

The dataset is downloaded from [autoMpg.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/regression/autoMpg.arff). The description is contained in the original file:

```text
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
% Identifier attribute deleted.
%
% As used by Kilpatrick, D. & Cameron-Jones, M. (1998). Numeric prediction
% using instance-based learning with encoding length selection. In Progress
% in Connectionist-Based Information Systems. Singapore: Springer-Verlag.
%
% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%
%
% 1. Title: Auto-Mpg Data
%
% 2. Sources:
%    (a) Origin:  This dataset was taken from the StatLib library which is
%                 maintained at Carnegie Mellon University. The dataset was
%                 used in the 1983 American Statistical Association Exposition.
%    (c) Date: July 7, 1993
%
% 3. Past Usage:
%     -  See 2b (above)
%     -  Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning.
%        In Proceedings on the Tenth International Conference of Machine
%        Learning, 236-243, University of Massachusetts, Amherst. Morgan
%        Kaufmann.
%
% 4. Relevant Information:
%
%    This dataset is a slightly modified version of the dataset provided in
%    the StatLib library.  In line with the use by Ross Quinlan (1993) in
%    predicting the attribute "mpg", 8 of the original instances were removed
%    because they had unknown values for the "mpg" attribute.  The original
%    dataset is available in the file "auto-mpg.data-original".
%
%    "The data concerns city-cycle fuel consumption in miles per gallon,
%     to be predicted in terms of 3 multivalued discrete and 5 continuous
%     attributes." (Quinlan, 1993)
%
% 5. Number of Instances: 398
%
% 6. Number of Attributes: 9 including the class attribute
%
% 7. Attribute Information:
%
%     1. mpg:           continuous
%     2. cylinders:     multi-valued discrete
%     3. displacement:  continuous
%     4. horsepower:    continuous
%     5. weight:        continuous
%     6. acceleration:  continuous
%     7. model year:    multi-valued discrete
%     8. origin:        multi-valued discrete
%     9. car name:      string (unique for each instance)
%
% 8. Missing Attribute Values:  horsepower has 6 missing values
```

The schema is as follows, in which the label is `class`.

```text
[cylinders: byte nominal[8, 4, 6, 3, 5], displacement: float, horsepower: float, weight: float, acceleration: float, model: byte nominal[70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82], origin: byte nominal[1, 3, 2], class: float]
```

#### Regression: BostonHousing

**This dataset contains both numeric and nominal columns. The nominal column `CHAS` only contains two nominal values (0 and 1).**

The dataset is downloaded from [housing.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/regression/housing.arff). The description is contained in the original file:

```text
% 1. Title: Boston Housing Data
% 
% 2. Sources:
%    (a) Origin:  This dataset was taken from the StatLib library which is
%                 maintained at Carnegie Mellon University.
%    (b) Creator:  Harrison, D. and Rubinfeld, D.L. 'Hedonic prices and the 
%                  demand for clean air', J. Environ. Economics & Management,
%                  vol.5, 81-102, 1978.
%    (c) Date: July 7, 1993
% 
% 3. Past Usage:
%    -   Used in Belsley, Kuh & Welsch, 'Regression diagnostics ...', Wiley, 
%        1980.   N.B. Various transformations are used in the table on
%        pages 244-261.
%     -  Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning.
%        In Proceedings on the Tenth International Conference of Machine 
%        Learning, 236-243, University of Massachusetts, Amherst. Morgan
%        Kaufmann.
% 
% 4. Relevant Information:
% 
%    Concerns housing values in suburbs of Boston.
% 
% 5. Number of Instances: 506
% 
% 6. Number of Attributes: 13 continuous attributes (including "class"
%                          attribute "MEDV"), 1 binary-valued attribute.
% 
% 7. Attribute Information:
% 
%     1. CRIM      per capita crime rate by town
%     2. ZN        proportion of residential land zoned for lots over 
%                  25,000 sq.ft.
%     3. INDUS     proportion of non-retail business acres per town
%     4. CHAS      Charles River dummy variable (= 1 if tract bounds 
%                  river; 0 otherwise)
%     5. NOX       nitric oxides concentration (parts per 10 million)
%     6. RM        average number of rooms per dwelling
%     7. AGE       proportion of owner-occupied units built prior to 1940
%     8. DIS       weighted distances to five Boston employment centres
%     9. RAD       index of accessibility to radial highways
%     10. TAX      full-value property-tax rate per $10,000
%     11. PTRATIO  pupil-teacher ratio by town
%     12. B        1000(Bk - 0.63)^2 where Bk is the proportion of blacks 
%                  by town
%     13. LSTAT    % lower status of the population
%     14. MEDV     Median value of owner-occupied homes in $1000's
% 
% 8. Missing Attribute Values:  None.
```

The schema is as follows, in which the label is `class`.

```text
[CRIM: float, ZN: float, INDUS: float, CHAS: byte nominal[0, 1], NOX: float, RM: float, AGE: float, DIS: float, RAD: float, TAX: float, PTRATIO: float, B: float, LSTAT: float, class: float]
```

#### Regression: Kin8nm

**The dataset is relatively large (around 8,000 rows). The dataset only contains numeric columns, but some values are negative.**

The dataset is downloaded from [kin8nm.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/regression/kin8nm.arff). The description is contained in the original file:

```text
% This is data set is concerned with the forward kinematics of an 8 link
% robot arm. Among the existing variants of this data set we have used
% the variant 8nm, which is known to be highly non-linear and medium
% noisy.
%
% Original source: DELVE repository of data. 
% Source: collection of regression datasets by Luis Torgo (ltorgo@ncc.up.pt) at
% http://www.ncc.up.pt/~ltorgo/Regression/DataSets.html
% Characteristics: 8192 cases, 9 attributes (0 nominal, 9 continuous).
```

The schema is as follows, in which the label is `y`.

```text
[theta1: double, theta2: double, theta3: double, theta4: double, theta5: double, theta6: double, theta7: double, theta8: double, y: double]
```

#### Binary Classification: Weather

**This is a small dataset with only 14 rows and all columns are nominal.**

The dataset is downloaded from [weather.nominal.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/weather.nominal.arff). The schema is as follows, in which the label is `play`.

```text
[outlook: byte nominal[sunny, overcast, rainy], temperature: byte nominal[hot, mild, cool], humidity: byte nominal[high, normal], windy: byte nominal[TRUE, FALSE], play: byte nominal[yes, no]]
```

#### 3-Class Classification: Iris

**This dataset only contains numeric columns. The dataset is for 3-class classification.**

The dataset is downloaded from [iris.arff](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/weka/iris.arff). The description is contained in the original file:

```text
% 1. Title: Iris Plants Database
% 
% 2. Sources:
%      (a) Creator: R.A. Fisher
%      (b) Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)
%      (c) Date: July, 1988
% 
% 3. Past Usage:
%    - Publications: too many to mention!!!  Here are a few.
%    1. Fisher,R.A. "The use of multiple measurements in taxonomic problems"
%       Annual Eugenics, 7, Part II, 179-188 (1936); also in "Contributions
%       to Mathematical Statistics" (John Wiley, NY, 1950).
%    2. Duda,R.O., & Hart,P.E. (1973) Pattern Classification and Scene Analysis.
%       (Q327.D83) John Wiley & Sons.  ISBN 0-471-22361-1.  See page 218.
%    3. Dasarathy, B.V. (1980) "Nosing Around the Neighborhood: A New System
%       Structure and Classification Rule for Recognition in Partially Exposed
%       Environments".  IEEE Transactions on Pattern Analysis and Machine
%       Intelligence, Vol. PAMI-2, No. 1, 67-71.
%       -- Results:
%          -- very low misclassification rates (0% for the setosa class)
%    4. Gates, G.W. (1972) "The Reduced Nearest Neighbor Rule".  IEEE 
%       Transactions on Information Theory, May 1972, 431-433.
%       -- Results:
%          -- very low misclassification rates again
%    5. See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al's AUTOCLASS II
%       conceptual clustering system finds 3 classes in the data.
% 
% 4. Relevant Information:
%    --- This is perhaps the best known database to be found in the pattern
%        recognition literature.  Fisher's paper is a classic in the field
%        and is referenced frequently to this day.  (See Duda & Hart, for
%        example.)  The data set contains 3 classes of 50 instances each,
%        where each class refers to a type of iris plant.  One class is
%        linearly separable from the other 2; the latter are NOT linearly
%        separable from each other.
%    --- Predicted attribute: class of iris plant.
%    --- This is an exceedingly simple domain.
% 
% 5. Number of Instances: 150 (50 in each of three classes)
% 
% 6. Number of Attributes: 4 numeric, predictive attributes and the class
% 
% 7. Attribute Information:
%    1. sepal length in cm
%    2. sepal width in cm
%    3. petal length in cm
%    4. petal width in cm
%    5. class: 
%       -- Iris Setosa
%       -- Iris Versicolour
%       -- Iris Virginica
% 
% 8. Missing Attribute Values: None
% 
% Summary Statistics:
%  	           Min  Max   Mean    SD   Class Correlation
%    sepal length: 4.3  7.9   5.84  0.83    0.7826   
%     sepal width: 2.0  4.4   3.05  0.43   -0.4194
%    petal length: 1.0  6.9   3.76  1.76    0.9490  (high!)
%     petal width: 0.1  2.5   1.20  0.76    0.9565  (high!)
% 
% 9. Class Distribution: 33.3% for each of 3 classes.
```

The schema is as follows, in which the label is `class`.

```text
[sepallength: float, sepalwidth: float, petallength: float, petalwidth: float, class: byte nominal[Iris-setosa, Iris-versicolor, Iris-virginica]]
```
#### Multi-class Classification: Pendigits

**This dataset only contains numeric columns. The dataset is for multi-class classification.** The dataset is downloaded from [pendigits.txt](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/classification/pendigits.txt). 

The schema is as follows, in which the label is `class`.

```text
[V1: double, V2: double, V3: double, V4: double, V5: double, V6: double, V7: double, V8: double, V9: double, V10: double, V11: double, V12: double, V13: double, V14: double, V15: double, V16: double, class: byte nominal[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
```

#### Binary Classification: BreastCancer

**This is a relatively large dataset that only contains numeric columns. The dataset is for binary classification, where the label is not the last column.** The dataset is downloaded from [breastcancer.csv](https://github.com/haifengl/smile/blob/master/shell/src/universal/data/classification/breastcancer.csv). 

The schema is as follows, in which the label is `diagnosis`.

```text
[diagnosis: byte nominal[M, B], radius_mean: double, texture_mean: double, perimeter_mean: double, area_mean: double, smoothness_mean: double, compactness_mean: double, concavity_mean: double, concave points_mean: double, symmetry_mean: double, fractal_dimension_mean: double, radius_se: double, texture_se: double, perimeter_se: double, area_se: double, smoothness_se: double, compactness_se: double, concavity_se: double, concave points_se: double, symmetry_se: double, fractal_dimension_se: double, radius_worst: double, texture_worst: double, perimeter_worst: double, area_worst: double, smoothness_worst: double, compactness_worst: double, concavity_worst: double, concave points_worst: double, symmetry_worst: double, fractal_dimension_worst: double]
```

### Datasets for Effectiveness

We introduce 4 datasets from [UCI Machine Learning Repository](https://archive.ics.uci.edu/ml/datasets.php) for the effectiveness tests. We further introduce a dataset from a real scenario for the large-scale experiment.

#### Preprocess

We also follow the principles shown below to preprocess all datasets for effectiveness:

- All nominal **features** are one-hot encoded. The column name for each of the nominal values is under the format `ColumnName_NominalName`. The nominal value for the one-hot encoded column is 0 and 1.
- All nominal **labels** (for classification tasks) remain unchanged.
- The dataset is in `csv` format. The first row describes the column name. The row data is separated by comma (`,`). The `NULL` data is left blank.

In addition, we preprocess all numerical features with different ranges into discrete values in the range of \[0, 10\] to facilitate setting privacy parameters.

#### Datasets from UCL Machine Learning Repository

- CASP (regression): [Physicochemical Properties of Protein Tertiary Structure Dataset](https://archive.ics.uci.edu/ml/datasets/Physicochemical+Properties+of+Protein+Tertiary+Structure).
- PowerPlant (regression): [Combined Cycle Power Plant Data Set](https://archive.ics.uci.edu/ml/datasets/combined+cycle+power+plant).
- Adult (binary classification): [Adult Data Set](https://archive.ics.uci.edu/ml/datasets/Adult).
- PenDigits (Multi-class classification): [Pen-Based Recognition of Handwritten Digits Data Set](https://archive.ics.uci.edu/ml/datasets/Pen-Based+Recognition+of+Handwritten+Digits).

#### Dataset from Real Scenario

We are sorry that we cannot release the dataset from the real scenario. Here we provide some basic information. 

- Task: binary classification.
- Features: 38 nominal features and 262 numerical features.
- Training: 234903 rows.
- Testing: 58727 rows.

## Datasets for PSU: Black IP

### Introduction

Private set union (PSU) enables two parties, each holding a  private set of elements, to compute the union of the two sets while revealing nothing more than the union itself. One important application of PSU is blacklist and vulnerability data aggregation. Consider that there are two organizations (i.e. the maintainers of the IP blacklists) who want to compute their IP blacklist joint list, which will help minimize vulnerabilities in their infrastructure. 

We run PSU experiments on a black IP dataset to demonstrate this PSU application. The black IP dataset is available at **[BlackIP](https://github.com/maravento/blackip)**. In our experiment, we assume the PSU sender maintains `blackip.txt` (with 3,176,636 distinct IPs), and the PSU client maintains `oldip.txt` (with 2,514,551 distinct IPs). The union result contains 3,178,512 IPs. All IPs in `blackip.txt` and `oldip.txt` are IPv4 addresses. Each IP is a 32-bit number, written in decimal digits and formatted as four 8-bit fields separated by periods. In our experiments, we uniquely represent each of these IPs by a 32-bit binary string. The dataset is located at `black_ip/blackip.txt` / `black_ip/oldip.txt`. The correlated configuration files are in `conf/psu_black_ip`.

### About BlackIP

The descriptions below are from [READMD.md](https://github.com/maravento/blackip.README.md) in the root of the BlackIP project.

**BlackIP** is a project that collects and unifies public blocklists of IP addresses, to make them compatible with [Squid](http://www.squid-cache.org/) and [IPSET](http://ipset.netfilter.org/) ([Iptables](http://www.netfilter.org/documentation/HOWTO/es/packet-filtering-HOWTO-7.html) [Netfilter](http://www.netfilter.org/))

**BlackIP** es un proyecto que recopila y unifica listas públicas de bloqueo de direcciones IPs, para hacerlas compatibles con [Squid](http://www.squid-cache.org/) e [IPSET](http://ipset.netfilter.org/) ([Iptables](http://www.netfilter.org/documentation/HOWTO/es/packet-filtering-HOWTO-7.html) [Netfilter](http://www.netfilter.org/))


#### DATA SHEET

|     ACL     | Blocked IP | File Size |
| :---------: | :--------: | :-------: |
| blackip.txt |  3176744   |  45,4 Mb  |

#### GIT CLONE

```bash
git clone https://github.com/maravento/blackip.git
```

#### CONTRIBUTIONS

We thank all those who contributed to this project. Those interested may contribute sending us new "Blocklist" links to be included in this project / Agradecemos a todos aquellos que han contribuido a este proyecto. Los interesados pueden contribuir, enviándonos enlaces de nuevas "Blocklist", para ser incluidas en este proyecto

Special thanks to: [Jhonatan Sneider](https://github.com/sney2002)

#### DONATE

BTC: 3M84UKpz8AwwPADiYGQjT9spPKCvbqm4Bc

#### BUILD

[![CreativeCommons](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/)
[maravento.com](http://www.maravento.com) is licensed under a [Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional License](http://creativecommons.org/licenses/by-sa/4.0/).

#### OBJECTION

Due to recent arbitrary changes in computer terminology, it is necessary to clarify the meaning and connotation of the term **blacklist**, associated with this project: *In computing, a blacklist, denylist or blocklist is a basic access control mechanism that allows through all elements (email addresses, users, passwords, URLs, IP addresses, domain names, file hashes, etc.), except those explicitly mentioned. Those items on the list are denied access. The opposite is a whitelist, which means only items on the list are let through whatever gate is being used.*

Debido a los recientes cambios arbitrarios en la terminología informática, es necesario aclarar el significado y connotación del término **blacklist**, asociado a este proyecto: *En informática, una lista negra, lista de denegación o lista de bloqueo es un mecanismo básico de control de acceso que permite a través de todos los elementos (direcciones de correo electrónico, usuarios, contraseñas, URL, direcciones IP, nombres de dominio, hashes de archivos, etc.), excepto los mencionados explícitamente. Esos elementos en la lista tienen acceso denegado. Lo opuesto es una lista blanca, lo que significa que solo los elementos de la lista pueden pasar por cualquier puerta que se esté utilizando.*

Source [Wikipedia](https://en.wikipedia.org/wiki/Blacklist_(computing))

Therefore / Por tanto

**blacklist**, **blocklist**, **blackweb**, **blackip**, **whitelist**, **etc.**

are terms that have nothing to do with racial discrimination / son términos que no tienen ninguna relación con la discriminación racial

#### DISCLAIMER

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

## Datasets for Streaming

We use the following three datasets for our streaming tasks:

- Synthetic dataset. This dataset is generated by randomly sampling data from a normal distribution with variance $\sigma=5$. There are $n=100,000$ values with the domain size of $d=1,000$. The dataset is located at `stream/synthetic_data.dat`.
- Retail dataset. This dataset contains the retail market basket data from an anonymous Belgian retail store with around $0.9$ million values and $16$ thousand distinct items. You can directly download the dataset from [Frequent Itemset Mining Dataset Repository](http://fimi.uantwerpen.be/data/).
- Kosarak dataset \cite{kosarak}. This dataset contains the click streams on a Hungarian website. There are around $8$ million values and $42$ thousand URLs. You can directly download the dataset from [Frequent Itemset Mining Dataset Repository](http://fimi.uantwerpen.be/data/).

================================================
FILE: data/black_ip/blackip.txt
================================================
[File too large to display: 43.3 MB]

================================================
FILE: data/black_ip/oldip.txt
================================================
[File too large to display: 34.3 MB]

================================================
FILE: data/classification/breast_cancer/breastcancer.csv
================================================
diagnosis,radius_mean,texture_mean,perimeter_mean,area_mean,smoothness_mean,compactness_mean,concavity_mean,concave points_mean,symmetry_mean,fractal_dimension_mean,radius_se,texture_se,perimeter_se,area_se,smoothness_se,compactness_se,concavity_se,concave points_se,symmetry_se,fractal_dimension_se,radius_worst,texture_worst,perimeter_worst,area_worst,smoothness_worst,compactness_worst,concavity_worst,concave points_worst,symmetry_worst,fractal_dimension_worst
M,17.99,10.38,122.8,1001,0.1184,0.2776,0.3001,0.1471,0.2419,0.07871,1.095,0.9053,8.589,153.4,0.006399,0.04904,0.05373,0.01587,0.03003,0.006193,25.38,17.33,184.6,2019,0.1622,0.6656,0.7119,0.2654,0.4601,0.1189
M,20.57,17.77,132.9,1326,0.08474,0.07864,0.0869,0.07017,0.1812,0.05667,0.5435,0.7339,3.398,74.08,0.005225,0.01308,0.0186,0.0134,0.01389,0.003532,24.99,23.41,158.8,1956,0.1238,0.1866,0.2416,0.186,0.275,0.08902
M,19.69,21.25,130,1203,0.1096,0.1599,0.1974,0.1279,0.2069,0.05999,0.7456,0.7869,4.585,94.03,0.00615,0.04006,0.03832,0.02058,0.0225,0.004571,23.57,25.53,152.5,1709,0.1444,0.4245,0.4504,0.243,0.3613,0.08758
M,11.42,20.38,77.58,386.1,0.1425,0.2839,0.2414,0.1052,0.2597,0.09744,0.4956,1.156,3.445,27.23,0.00911,0.07458,0.05661,0.01867,0.05963,0.009208,14.91,26.5,98.87,567.7,0.2098,0.8663,0.6869,0.2575,0.6638,0.173
M,20.29,14.34,135.1,1297,0.1003,0.1328,0.198,0.1043,0.1809,0.05883,0.7572,0.7813,5.438,94.44,0.01149,0.02461,0.05688,0.01885,0.01756,0.005115,22.54,16.67,152.2,1575,0.1374,0.205,0.4,0.1625,0.2364,0.07678
M,12.45,15.7,82.57,477.1,0.1278,0.17,0.1578,0.08089,0.2087,0.07613,0.3345,0.8902,2.217,27.19,0.00751,0.03345,0.03672,0.01137,0.02165,0.005082,15.47,23.75,103.4,741.6,0.1791,0.5249,0.5355,0.1741,0.3985,0.1244
M,18.25,19.98,119.6,1040,0.09463,0.109,0.1127,0.074,0.1794,0.05742,0.4467,0.7732,3.18,53.91,0.004314,0.01382,0.02254,0.01039,0.01369,0.002179,22.88,27.66,153.2,1606,0.1442,0.2576,0.3784,0.1932,0.3063,0.08368
M,13.71,20.83,90.2,577.9,0.1189,0.1645,0.09366,0.05985,0.2196,0.07451,0.5835,1.377,3.856,50.96,0.008805,0.03029,0.02488,0.01448,0.01486,0.005412,17.06,28.14,110.6,897,0.1654,0.3682,0.2678,0.1556,0.3196,0.1151
M,13,21.82,87.5,519.8,0.1273,0.1932,0.1859,0.09353,0.235,0.07389,0.3063,1.002,2.406,24.32,0.005731,0.03502,0.03553,0.01226,0.02143,0.003749,15.49,30.73,106.2,739.3,0.1703,0.5401,0.539,0.206,0.4378,0.1072
M,12.46,24.04,83.97,475.9,0.1186,0.2396,0.2273,0.08543,0.203,0.08243,0.2976,1.599,2.039,23.94,0.007149,0.07217,0.07743,0.01432,0.01789,0.01008,15.09,40.68,97.65,711.4,0.1853,1.058,1.105,0.221,0.4366,0.2075
M,16.02,23.24,102.7,797.8,0.08206,0.06669,0.03299,0.03323,0.1528,0.05697,0.3795,1.187,2.466,40.51,0.004029,0.009269,0.01101,0.007591,0.0146,0.003042,19.19,33.88,123.8,1150,0.1181,0.1551,0.1459,0.09975,0.2948,0.08452
M,15.78,17.89,103.6,781,0.0971,0.1292,0.09954,0.06606,0.1842,0.06082,0.5058,0.9849,3.564,54.16,0.005771,0.04061,0.02791,0.01282,0.02008,0.004144,20.42,27.28,136.5,1299,0.1396,0.5609,0.3965,0.181,0.3792,0.1048
M,19.17,24.8,132.4,1123,0.0974,0.2458,0.2065,0.1118,0.2397,0.078,0.9555,3.568,11.07,116.2,0.003139,0.08297,0.0889,0.0409,0.04484,0.01284,20.96,29.94,151.7,1332,0.1037,0.3903,0.3639,0.1767,0.3176,0.1023
M,15.85,23.95,103.7,782.7,0.08401,0.1002,0.09938,0.05364,0.1847,0.05338,0.4033,1.078,2.903,36.58,0.009769,0.03126,0.05051,0.01992,0.02981,0.003002,16.84,27.66,112,876.5,0.1131,0.1924,0.2322,0.1119,0.2809,0.06287
M,13.73,22.61,93.6,578.3,0.1131,0.2293,0.2128,0.08025,0.2069,0.07682,0.2121,1.169,2.061,19.21,0.006429,0.05936,0.05501,0.01628,0.01961,0.008093,15.03,32.01,108.8,697.7,0.1651,0.7725,0.6943,0.2208,0.3596,0.1431
M,14.54,27.54,96.73,658.8,0.1139,0.1595,0.1639,0.07364,0.2303,0.07077,0.37,1.033,2.879,32.55,0.005607,0.0424,0.04741,0.0109,0.01857,0.005466,17.46,37.13,124.1,943.2,0.1678,0.6577,0.7026,0.1712,0.4218,0.1341
M,14.68,20.13,94.74,684.5,0.09867,0.072,0.07395,0.05259,0.1586,0.05922,0.4727,1.24,3.195,45.4,0.005718,0.01162,0.01998,0.01109,0.0141,0.002085,19.07,30.88,123.4,1138,0.1464,0.1871,0.2914,0.1609,0.3029,0.08216
M,16.13,20.68,108.1,798.8,0.117,0.2022,0.1722,0.1028,0.2164,0.07356,0.5692,1.073,3.854,54.18,0.007026,0.02501,0.03188,0.01297,0.01689,0.004142,20.96,31.48,136.8,1315,0.1789,0.4233,0.4784,0.2073,0.3706,0.1142
M,19.81,22.15,130,1260,0.09831,0.1027,0.1479,0.09498,0.1582,0.05395,0.7582,1.017,5.865,112.4,0.006494,0.01893,0.03391,0.01521,0.01356,0.001997,27.32,30.88,186.8,2398,0.1512,0.315,0.5372,0.2388,0.2768,0.07615
B,13.54,14.36,87.46,566.3,0.09779,0.08129,0.06664,0.04781,0.1885,0.05766,0.2699,0.7886,2.058,23.56,0.008462,0.0146,0.02387,0.01315,0.0198,0.0023,15.11,19.26,99.7,711.2,0.144,0.1773,0.239,0.1288,0.2977,0.07259
B,13.08,15.71,85.63,520,0.1075,0.127,0.04568,0.0311,0.1967,0.06811,0.1852,0.7477,1.383,14.67,0.004097,0.01898,0.01698,0.00649,0.01678,0.002425,14.5,20.49,96.09,630.5,0.1312,0.2776,0.189,0.07283,0.3184,0.08183
B,9.504,12.44,60.34,273.9,0.1024,0.06492,0.02956,0.02076,0.1815,0.06905,0.2773,0.9768,1.909,15.7,0.009606,0.01432,0.01985,0.01421,0.02027,0.002968,10.23,15.66,65.13,314.9,0.1324,0.1148,0.08867,0.06227,0.245,0.07773
M,15.34,14.26,102.5,704.4,0.1073,0.2135,0.2077,0.09756,0.2521,0.07032,0.4388,0.7096,3.384,44.91,0.006789,0.05328,0.06446,0.02252,0.03672,0.004394,18.07,19.08,125.1,980.9,0.139,0.5954,0.6305,0.2393,0.4667,0.09946
M,21.16,23.04,137.2,1404,0.09428,0.1022,0.1097,0.08632,0.1769,0.05278,0.6917,1.127,4.303,93.99,0.004728,0.01259,0.01715,0.01038,0.01083,0.001987,29.17,35.59,188,2615,0.1401,0.26,0.3155,0.2009,0.2822,0.07526
M,16.65,21.38,110,904.6,0.1121,0.1457,0.1525,0.0917,0.1995,0.0633,0.8068,0.9017,5.455,102.6,0.006048,0.01882,0.02741,0.0113,0.01468,0.002801,26.46,31.56,177,2215,0.1805,0.3578,0.4695,0.2095,0.3613,0.09564
M,17.14,16.4,116,912.7,0.1186,0.2276,0.2229,0.1401,0.304,0.07413,1.046,0.976,7.276,111.4,0.008029,0.03799,0.03732,0.02397,0.02308,0.007444,22.25,21.4,152.4,1461,0.1545,0.3949,0.3853,0.255,0.4066,0.1059
M,14.58,21.53,97.41,644.8,0.1054,0.1868,0.1425,0.08783,0.2252,0.06924,0.2545,0.9832,2.11,21.05,0.004452,0.03055,0.02681,0.01352,0.01454,0.003711,17.62,33.21,122.4,896.9,0.1525,0.6643,0.5539,0.2701,0.4264,0.1275
M,18.61,20.25,122.1,1094,0.0944,0.1066,0.149,0.07731,0.1697,0.05699,0.8529,1.849,5.632,93.54,0.01075,0.02722,0.05081,0.01911,0.02293,0.004217,21.31,27.26,139.9,1403,0.1338,0.2117,0.3446,0.149,0.2341,0.07421
M,15.3,25.27,102.4,732.4,0.1082,0.1697,0.1683,0.08751,0.1926,0.0654,0.439,1.012,3.498,43.5,0.005233,0.03057,0.03576,0.01083,0.01768,0.002967,20.27,36.71,149.3,1269,0.1641,0.611,0.6335,0.2024,0.4027,0.09876
M,17.57,15.05,115,955.1,0.09847,0.1157,0.09875,0.07953,0.1739,0.06149,0.6003,0.8225,4.655,61.1,0.005627,0.03033,0.03407,0.01354,0.01925,0.003742,20.01,19.52,134.9,1227,0.1255,0.2812,0.2489,0.1456,0.2756,0.07919
M,18.63,25.11,124.8,1088,0.1064,0.1887,0.2319,0.1244,0.2183,0.06197,0.8307,1.466,5.574,105,0.006248,0.03374,0.05196,0.01158,0.02007,0.00456,23.15,34.01,160.5,1670,0.1491,0.4257,0.6133,0.1848,0.3444,0.09782
M,11.84,18.7,77.93,440.6,0.1109,0.1516,0.1218,0.05182,0.2301,0.07799,0.4825,1.03,3.475,41,0.005551,0.03414,0.04205,0.01044,0.02273,0.005667,16.82,28.12,119.4,888.7,0.1637,0.5775,0.6956,0.1546,0.4761,0.1402
M,17.02,23.98,112.8,899.3,0.1197,0.1496,0.2417,0.1203,0.2248,0.06382,0.6009,1.398,3.999,67.78,0.008268,0.03082,0.05042,0.01112,0.02102,0.003854,20.88,32.09,136.1,1344,0.1634,0.3559,0.5588,0.1847,0.353,0.08482
M,19.27,26.47,127.9,1162,0.09401,0.1719,0.1657,0.07593,0.1853,0.06261,0.5558,0.6062,3.528,68.17,0.005015,0.03318,0.03497,0.009643,0.01543,0.003896,24.15,30.9,161.4,1813,0.1509,0.659,0.6091,0.1785,0.3672,0.1123
M,16.13,17.88,107,807.2,0.104,0.1559,0.1354,0.07752,0.1998,0.06515,0.334,0.6857,2.183,35.03,0.004185,0.02868,0.02664,0.009067,0.01703,0.003817,20.21,27.26,132.7,1261,0.1446,0.5804,0.5274,0.1864,0.427,0.1233
M,16.74,21.59,110.1,869.5,0.0961,0.1336,0.1348,0.06018,0.1896,0.05656,0.4615,0.9197,3.008,45.19,0.005776,0.02499,0.03695,0.01195,0.02789,0.002665,20.01,29.02,133.5,1229,0.1563,0.3835,0.5409,0.1813,0.4863,0.08633
M,14.25,21.72,93.63,633,0.09823,0.1098,0.1319,0.05598,0.1885,0.06125,0.286,1.019,2.657,24.91,0.005878,0.02995,0.04815,0.01161,0.02028,0.004022,15.89,30.36,116.2,799.6,0.1446,0.4238,0.5186,0.1447,0.3591,0.1014
B,13.03,18.42,82.61,523.8,0.08983,0.03766,0.02562,0.02923,0.1467,0.05863,0.1839,2.342,1.17,14.16,0.004352,0.004899,0.01343,0.01164,0.02671,0.001777,13.3,22.81,84.46,545.9,0.09701,0.04619,0.04833,0.05013,0.1987,0.06169
M,14.99,25.2,95.54,698.8,0.09387,0.05131,0.02398,0.02899,0.1565,0.05504,1.214,2.188,8.077,106,0.006883,0.01094,0.01818,0.01917,0.007882,0.001754,14.99,25.2,95.54,698.8,0.09387,0.05131,0.02398,0.02899,0.1565,0.05504
M,13.48,20.82,88.4,559.2,0.1016,0.1255,0.1063,0.05439,0.172,0.06419,0.213,0.5914,1.545,18.52,0.005367,0.02239,0.03049,0.01262,0.01377,0.003187,15.53,26.02,107.3,740.4,0.161,0.4225,0.503,0.2258,0.2807,0.1071
M,13.44,21.58,86.18,563,0.08162,0.06031,0.0311,0.02031,0.1784,0.05587,0.2385,0.8265,1.572,20.53,0.00328,0.01102,0.0139,0.006881,0.0138,0.001286,15.93,30.25,102.5,787.9,0.1094,0.2043,0.2085,0.1112,0.2994,0.07146
M,10.95,21.35,71.9,371.1,0.1227,0.1218,0.1044,0.05669,0.1895,0.0687,0.2366,1.428,1.822,16.97,0.008064,0.01764,0.02595,0.01037,0.01357,0.00304,12.84,35.34,87.22,514,0.1909,0.2698,0.4023,0.1424,0.2964,0.09606
M,19.07,24.81,128.3,1104,0.09081,0.219,0.2107,0.09961,0.231,0.06343,0.9811,1.666,8.83,104.9,0.006548,0.1006,0.09723,0.02638,0.05333,0.007646,24.09,33.17,177.4,1651,0.1247,0.7444,0.7242,0.2493,0.467,0.1038
M,13.28,20.28,87.32,545.2,0.1041,0.1436,0.09847,0.06158,0.1974,0.06782,0.3704,0.8249,2.427,31.33,0.005072,0.02147,0.02185,0.00956,0.01719,0.003317,17.38,28,113.1,907.2,0.153,0.3724,0.3664,0.1492,0.3739,0.1027
M,13.17,21.81,85.42,531.5,0.09714,0.1047,0.08259,0.05252,0.1746,0.06177,0.1938,0.6123,1.334,14.49,0.00335,0.01384,0.01452,0.006853,0.01113,0.00172,16.23,29.89,105.5,740.7,0.1503,0.3904,0.3728,0.1607,0.3693,0.09618
M,18.65,17.6,123.7,1076,0.1099,0.1686,0.1974,0.1009,0.1907,0.06049,0.6289,0.6633,4.293,71.56,0.006294,0.03994,0.05554,0.01695,0.02428,0.003535,22.82,21.32,150.6,1567,0.1679,0.509,0.7345,0.2378,0.3799,0.09185
B,8.196,16.84,51.71,201.9,0.086,0.05943,0.01588,0.005917,0.1769,0.06503,0.1563,0.9567,1.094,8.205,0.008968,0.01646,0.01588,0.005917,0.02574,0.002582,8.964,21.96,57.26,242.2,0.1297,0.1357,0.0688,0.02564,0.3105,0.07409
M,13.17,18.66,85.98,534.6,0.1158,0.1231,0.1226,0.0734,0.2128,0.06777,0.2871,0.8937,1.897,24.25,0.006532,0.02336,0.02905,0.01215,0.01743,0.003643,15.67,27.95,102.8,759.4,0.1786,0.4166,0.5006,0.2088,0.39,0.1179
B,12.05,14.63,78.04,449.3,0.1031,0.09092,0.06592,0.02749,0.1675,0.06043,0.2636,0.7294,1.848,19.87,0.005488,0.01427,0.02322,0.00566,0.01428,0.002422,13.76,20.7,89.88,582.6,0.1494,0.2156,0.305,0.06548,0.2747,0.08301
B,13.49,22.3,86.91,561,0.08752,0.07698,0.04751,0.03384,0.1809,0.05718,0.2338,1.353,1.735,20.2,0.004455,0.01382,0.02095,0.01184,0.01641,0.001956,15.15,31.82,99,698.8,0.1162,0.1711,0.2282,0.1282,0.2871,0.06917
B,11.76,21.6,74.72,427.9,0.08637,0.04966,0.01657,0.01115,0.1495,0.05888,0.4062,1.21,2.635,28.47,0.005857,0.009758,0.01168,0.007445,0.02406,0.001769,12.98,25.72,82.98,516.5,0.1085,0.08615,0.05523,0.03715,0.2433,0.06563
B,13.64,16.34,87.21,571.8,0.07685,0.06059,0.01857,0.01723,0.1353,0.05953,0.1872,0.9234,1.449,14.55,0.004477,0.01177,0.01079,0.007956,0.01325,0.002551,14.67,23.19,96.08,656.7,0.1089,0.1582,0.105,0.08586,0.2346,0.08025
B,11.94,18.24,75.71,437.6,0.08261,0.04751,0.01972,0.01349,0.1868,0.0611,0.2273,0.6329,1.52,17.47,0.00721,0.00838,0.01311,0.008,0.01996,0.002635,13.1,21.33,83.67,527.2,0.1144,0.08906,0.09203,0.06296,0.2785,0.07408
M,18.22,18.7,120.3,1033,0.1148,0.1485,0.1772,0.106,0.2092,0.0631,0.8337,1.593,4.877,98.81,0.003899,0.02961,0.02817,0.009222,0.02674,0.005126,20.6,24.13,135.1,1321,0.128,0.2297,0.2623,0.1325,0.3021,0.07987
M,15.1,22.02,97.26,712.8,0.09056,0.07081,0.05253,0.03334,0.1616,0.05684,0.3105,0.8339,2.097,29.91,0.004675,0.0103,0.01603,0.009222,0.01095,0.001629,18.1,31.69,117.7,1030,0.1389,0.2057,0.2712,0.153,0.2675,0.07873
B,11.52,18.75,73.34,409,0.09524,0.05473,0.03036,0.02278,0.192,0.05907,0.3249,0.9591,2.183,23.47,0.008328,0.008722,0.01349,0.00867,0.03218,0.002386,12.84,22.47,81.81,506.2,0.1249,0.0872,0.09076,0.06316,0.3306,0.07036
M,19.21,18.57,125.5,1152,0.1053,0.1267,0.1323,0.08994,0.1917,0.05961,0.7275,1.193,4.837,102.5,0.006458,0.02306,0.02945,0.01538,0.01852,0.002608,26.14,28.14,170.1,2145,0.1624,0.3511,0.3879,0.2091,0.3537,0.08294
M,14.71,21.59,95.55,656.9,0.1137,0.1365,0.1293,0.08123,0.2027,0.06758,0.4226,1.15,2.735,40.09,0.003659,0.02855,0.02572,0.01272,0.01817,0.004108,17.87,30.7,115.7,985.5,0.1368,0.429,0.3587,0.1834,0.3698,0.1094
B,13.05,19.31,82.61,527.2,0.0806,0.03789,0.000692,0.004167,0.1819,0.05501,0.404,1.214,2.595,32.96,0.007491,0.008593,0.000692,0.004167,0.0219,0.00299,14.23,22.25,90.24,624.1,0.1021,0.06191,0.001845,0.01111,0.2439,0.06289
B,8.618,11.79,54.34,224.5,0.09752,0.05272,0.02061,0.007799,0.1683,0.07187,0.1559,0.5796,1.046,8.322,0.01011,0.01055,0.01981,0.005742,0.0209,0.002788,9.507,15.4,59.9,274.9,0.1733,0.1239,0.1168,0.04419,0.322,0.09026
B,10.17,14.88,64.55,311.9,0.1134,0.08061,0.01084,0.0129,0.2743,0.0696,0.5158,1.441,3.312,34.62,0.007514,0.01099,0.007665,0.008193,0.04183,0.005953,11.02,17.45,69.86,368.6,0.1275,0.09866,0.02168,0.02579,0.3557,0.0802
B,8.598,20.98,54.66,221.8,0.1243,0.08963,0.03,0.009259,0.1828,0.06757,0.3582,2.067,2.493,18.39,0.01193,0.03162,0.03,0.009259,0.03357,0.003048,9.565,27.04,62.06,273.9,0.1639,0.1698,0.09001,0.02778,0.2972,0.07712
M,14.25,22.15,96.42,645.7,0.1049,0.2008,0.2135,0.08653,0.1949,0.07292,0.7036,1.268,5.373,60.78,0.009407,0.07056,0.06899,0.01848,0.017,0.006113,17.67,29.51,119.1,959.5,0.164,0.6247,0.6922,0.1785,0.2844,0.1132
B,9.173,13.86,59.2,260.9,0.07721,0.08751,0.05988,0.0218,0.2341,0.06963,0.4098,2.265,2.608,23.52,0.008738,0.03938,0.04312,0.0156,0.04192,0.005822,10.01,19.23,65.59,310.1,0.09836,0.1678,0.1397,0.05087,0.3282,0.0849
M,12.68,23.84,82.69,499,0.1122,0.1262,0.1128,0.06873,0.1905,0.0659,0.4255,1.178,2.927,36.46,0.007781,0.02648,0.02973,0.0129,0.01635,0.003601,17.09,33.47,111.8,888.3,0.1851,0.4061,0.4024,0.1716,0.3383,0.1031
M,14.78,23.94,97.4,668.3,0.1172,0.1479,0.1267,0.09029,0.1953,0.06654,0.3577,1.281,2.45,35.24,0.006703,0.0231,0.02315,0.01184,0.019,0.003224,17.31,33.39,114.6,925.1,0.1648,0.3416,0.3024,0.1614,0.3321,0.08911
B,9.465,21.01,60.11,269.4,0.1044,0.07773,0.02172,0.01504,0.1717,0.06899,0.2351,2.011,1.66,14.2,0.01052,0.01755,0.01714,0.009333,0.02279,0.004237,10.41,31.56,67.03,330.7,0.1548,0.1664,0.09412,0.06517,0.2878,0.09211
B,11.31,19.04,71.8,394.1,0.08139,0.04701,0.03709,0.0223,0.1516,0.05667,0.2727,0.9429,1.831,18.15,0.009282,0.009216,0.02063,0.008965,0.02183,0.002146,12.33,23.84,78,466.7,0.129,0.09148,0.1444,0.06961,0.24,0.06641
B,9.029,17.33,58.79,250.5,0.1066,0.1413,0.313,0.04375,0.2111,0.08046,0.3274,1.194,1.885,17.67,0.009549,0.08606,0.3038,0.03322,0.04197,0.009559,10.31,22.65,65.5,324.7,0.1482,0.4365,1.252,0.175,0.4228,0.1175
B,12.78,16.49,81.37,502.5,0.09831,0.05234,0.03653,0.02864,0.159,0.05653,0.2368,0.8732,1.471,18.33,0.007962,0.005612,0.01585,0.008662,0.02254,0.001906,13.46,19.76,85.67,554.9,0.1296,0.07061,0.1039,0.05882,0.2383,0.0641
M,18.94,21.31,123.6,1130,0.09009,0.1029,0.108,0.07951,0.1582,0.05461,0.7888,0.7975,5.486,96.05,0.004444,0.01652,0.02269,0.0137,0.01386,0.001698,24.86,26.58,165.9,1866,0.1193,0.2336,0.2687,0.1789,0.2551,0.06589
B,8.888,14.64,58.79,244,0.09783,0.1531,0.08606,0.02872,0.1902,0.0898,0.5262,0.8522,3.168,25.44,0.01721,0.09368,0.05671,0.01766,0.02541,0.02193,9.733,15.67,62.56,284.4,0.1207,0.2436,0.1434,0.04786,0.2254,0.1084
M,17.2,24.52,114.2,929.4,0.1071,0.183,0.1692,0.07944,0.1927,0.06487,0.5907,1.041,3.705,69.47,0.00582,0.05616,0.04252,0.01127,0.01527,0.006299,23.32,33.82,151.6,1681,0.1585,0.7394,0.6566,0.1899,0.3313,0.1339
M,13.8,15.79,90.43,584.1,0.1007,0.128,0.07789,0.05069,0.1662,0.06566,0.2787,0.6205,1.957,23.35,0.004717,0.02065,0.01759,0.009206,0.0122,0.00313,16.57,20.86,110.3,812.4,0.1411,0.3542,0.2779,0.1383,0.2589,0.103
B,12.31,16.52,79.19,470.9,0.09172,0.06829,0.03372,0.02272,0.172,0.05914,0.2505,1.025,1.74,19.68,0.004854,0.01819,0.01826,0.007965,0.01386,0.002304,14.11,23.21,89.71,611.1,0.1176,0.1843,0.1703,0.0866,0.2618,0.07609
M,16.07,19.65,104.1,817.7,0.09168,0.08424,0.09769,0.06638,0.1798,0.05391,0.7474,1.016,5.029,79.25,0.01082,0.02203,0.035,0.01809,0.0155,0.001948,19.77,24.56,128.8,1223,0.15,0.2045,0.2829,0.152,0.265,0.06387
B,13.53,10.94,87.91,559.2,0.1291,0.1047,0.06877,0.06556,0.2403,0.06641,0.4101,1.014,2.652,32.65,0.0134,0.02839,0.01162,0.008239,0.02572,0.006164,14.08,12.49,91.36,605.5,0.1451,0.1379,0.08539,0.07407,0.271,0.07191
M,18.05,16.15,120.2,1006,0.1065,0.2146,0.1684,0.108,0.2152,0.06673,0.9806,0.5505,6.311,134.8,0.00794,0.05839,0.04658,0.0207,0.02591,0.007054,22.39,18.91,150.1,1610,0.1478,0.5634,0.3786,0.2102,0.3751,0.1108
M,20.18,23.97,143.7,1245,0.1286,0.3454,0.3754,0.1604,0.2906,0.08142,0.9317,1.885,8.649,116.4,0.01038,0.06835,0.1091,0.02593,0.07895,0.005987,23.37,31.72,170.3,1623,0.1639,0.6164,0.7681,0.2508,0.544,0.09964
B,12.86,18,83.19,506.3,0.09934,0.09546,0.03889,0.02315,0.1718,0.05997,0.2655,1.095,1.778,20.35,0.005293,0.01661,0.02071,0.008179,0.01748,0.002848,14.24,24.82,91.88,622.1,0.1289,0.2141,0.1731,0.07926,0.2779,0.07918
B,11.45,20.97,73.81,401.5,0.1102,0.09362,0.04591,0.02233,0.1842,0.07005,0.3251,2.174,2.077,24.62,0.01037,0.01706,0.02586,0.007506,0.01816,0.003976,13.11,32.16,84.53,525.1,0.1557,0.1676,0.1755,0.06127,0.2762,0.08851
B,13.34,15.86,86.49,520,0.1078,0.1535,0.1169,0.06987,0.1942,0.06902,0.286,1.016,1.535,12.96,0.006794,0.03575,0.0398,0.01383,0.02134,0.004603,15.53,23.19,96.66,614.9,0.1536,0.4791,0.4858,0.1708,0.3527,0.1016
M,25.22,24.91,171.5,1878,0.1063,0.2665,0.3339,0.1845,0.1829,0.06782,0.8973,1.474,7.382,120,0.008166,0.05693,0.0573,0.0203,0.01065,0.005893,30,33.62,211.7,2562,0.1573,0.6076,0.6476,0.2867,0.2355,0.1051
M,19.1,26.29,129.1,1132,0.1215,0.1791,0.1937,0.1469,0.1634,0.07224,0.519,2.91,5.801,67.1,0.007545,0.0605,0.02134,0.01843,0.03056,0.01039,20.33,32.72,141.3,1298,0.1392,0.2817,0.2432,0.1841,0.2311,0.09203
B,12,15.65,76.95,443.3,0.09723,0.07165,0.04151,0.01863,0.2079,0.05968,0.2271,1.255,1.441,16.16,0.005969,0.01812,0.02007,0.007027,0.01972,0.002607,13.67,24.9,87.78,567.9,0.1377,0.2003,0.2267,0.07632,0.3379,0.07924
M,18.46,18.52,121.1,1075,0.09874,0.1053,0.1335,0.08795,0.2132,0.06022,0.6997,1.475,4.782,80.6,0.006471,0.01649,0.02806,0.0142,0.0237,0.003755,22.93,27.68,152.2,1603,0.1398,0.2089,0.3157,0.1642,0.3695,0.08579
M,14.48,21.46,94.25,648.2,0.09444,0.09947,0.1204,0.04938,0.2075,0.05636,0.4204,2.22,3.301,38.87,0.009369,0.02983,0.05371,0.01761,0.02418,0.003249,16.21,29.25,108.4,808.9,0.1306,0.1976,0.3349,0.1225,0.302,0.06846
M,19.02,24.59,122,1076,0.09029,0.1206,0.1468,0.08271,0.1953,0.05629,0.5495,0.6636,3.055,57.65,0.003872,0.01842,0.0371,0.012,0.01964,0.003337,24.56,30.41,152.9,1623,0.1249,0.3206,0.5755,0.1956,0.3956,0.09288
B,12.36,21.8,79.78,466.1,0.08772,0.09445,0.06015,0.03745,0.193,0.06404,0.2978,1.502,2.203,20.95,0.007112,0.02493,0.02703,0.01293,0.01958,0.004463,13.83,30.5,91.46,574.7,0.1304,0.2463,0.2434,0.1205,0.2972,0.09261
B,14.64,15.24,95.77,651.9,0.1132,0.1339,0.09966,0.07064,0.2116,0.06346,0.5115,0.7372,3.814,42.76,0.005508,0.04412,0.04436,0.01623,0.02427,0.004841,16.34,18.24,109.4,803.6,0.1277,0.3089,0.2604,0.1397,0.3151,0.08473
B,14.62,24.02,94.57,662.7,0.08974,0.08606,0.03102,0.02957,0.1685,0.05866,0.3721,1.111,2.279,33.76,0.004868,0.01818,0.01121,0.008606,0.02085,0.002893,16.11,29.11,102.9,803.7,0.1115,0.1766,0.09189,0.06946,0.2522,0.07246
M,15.37,22.76,100.2,728.2,0.092,0.1036,0.1122,0.07483,0.1717,0.06097,0.3129,0.8413,2.075,29.44,0.009882,0.02444,0.04531,0.01763,0.02471,0.002142,16.43,25.84,107.5,830.9,0.1257,0.1997,0.2846,0.1476,0.2556,0.06828
B,13.27,14.76,84.74,551.7,0.07355,0.05055,0.03261,0.02648,0.1386,0.05318,0.4057,1.153,2.701,36.35,0.004481,0.01038,0.01358,0.01082,0.01069,0.001435,16.36,22.35,104.5,830.6,0.1006,0.1238,0.135,0.1001,0.2027,0.06206
B,13.45,18.3,86.6,555.1,0.1022,0.08165,0.03974,0.0278,0.1638,0.0571,0.295,1.373,2.099,25.22,0.005884,0.01491,0.01872,0.009366,0.01884,0.001817,15.1,25.94,97.59,699.4,0.1339,0.1751,0.1381,0.07911,0.2678,0.06603
M,15.06,19.83,100.3,705.6,0.1039,0.1553,0.17,0.08815,0.1855,0.06284,0.4768,0.9644,3.706,47.14,0.00925,0.03715,0.04867,0.01851,0.01498,0.00352,18.23,24.23,123.5,1025,0.1551,0.4203,0.5203,0.2115,0.2834,0.08234
M,20.26,23.03,132.4,1264,0.09078,0.1313,0.1465,0.08683,0.2095,0.05649,0.7576,1.509,4.554,87.87,0.006016,0.03482,0.04232,0.01269,0.02657,0.004411,24.22,31.59,156.1,1750,0.119,0.3539,0.4098,0.1573,0.3689,0.08368
B,12.18,17.84,77.79,451.1,0.1045,0.07057,0.0249,0.02941,0.19,0.06635,0.3661,1.511,2.41,24.44,0.005433,0.01179,0.01131,0.01519,0.0222,0.003408,12.83,20.92,82.14,495.2,0.114,0.09358,0.0498,0.05882,0.2227,0.07376
B,9.787,19.94,62.11,294.5,0.1024,0.05301,0.006829,0.007937,0.135,0.0689,0.335,2.043,2.132,20.05,0.01113,0.01463,0.005308,0.00525,0.01801,0.005667,10.92,26.29,68.81,366.1,0.1316,0.09473,0.02049,0.02381,0.1934,0.08988
B,11.6,12.84,74.34,412.6,0.08983,0.07525,0.04196,0.0335,0.162,0.06582,0.2315,0.5391,1.475,15.75,0.006153,0.0133,0.01693,0.006884,0.01651,0.002551,13.06,17.16,82.96,512.5,0.1431,0.1851,0.1922,0.08449,0.2772,0.08756
M,14.42,19.77,94.48,642.5,0.09752,0.1141,0.09388,0.05839,0.1879,0.0639,0.2895,1.851,2.376,26.85,0.008005,0.02895,0.03321,0.01424,0.01462,0.004452,16.33,30.86,109.5,826.4,0.1431,0.3026,0.3194,0.1565,0.2718,0.09353
M,13.61,24.98,88.05,582.7,0.09488,0.08511,0.08625,0.04489,0.1609,0.05871,0.4565,1.29,2.861,43.14,0.005872,0.01488,0.02647,0.009921,0.01465,0.002355,16.99,35.27,108.6,906.5,0.1265,0.1943,0.3169,0.1184,0.2651,0.07397
B,6.981,13.43,43.79,143.5,0.117,0.07568,0,0,0.193,0.07818,0.2241,1.508,1.553,9.833,0.01019,0.01084,0,0,0.02659,0.0041,7.93,19.54,50.41,185.2,0.1584,0.1202,0,0,0.2932,0.09382
B,12.18,20.52,77.22,458.7,0.08013,0.04038,0.02383,0.0177,0.1739,0.05677,0.1924,1.571,1.183,14.68,0.00508,0.006098,0.01069,0.006797,0.01447,0.001532,13.34,32.84,84.58,547.8,0.1123,0.08862,0.1145,0.07431,0.2694,0.06878
B,9.876,19.4,63.95,298.3,0.1005,0.09697,0.06154,0.03029,0.1945,0.06322,0.1803,1.222,1.528,11.77,0.009058,0.02196,0.03029,0.01112,0.01609,0.00357,10.76,26.83,72.22,361.2,0.1559,0.2302,0.2644,0.09749,0.2622,0.0849
B,10.49,19.29,67.41,336.1,0.09989,0.08578,0.02995,0.01201,0.2217,0.06481,0.355,1.534,2.302,23.13,0.007595,0.02219,0.0288,0.008614,0.0271,0.003451,11.54,23.31,74.22,402.8,0.1219,0.1486,0.07987,0.03203,0.2826,0.07552
M,13.11,15.56,87.21,530.2,0.1398,0.1765,0.2071,0.09601,0.1925,0.07692,0.3908,0.9238,2.41,34.66,0.007162,0.02912,0.05473,0.01388,0.01547,0.007098,16.31,22.4,106.4,827.2,0.1862,0.4099,0.6376,0.1986,0.3147,0.1405
B,11.64,18.33,75.17,412.5,0.1142,0.1017,0.0707,0.03485,0.1801,0.0652,0.306,1.657,2.155,20.62,0.00854,0.0231,0.02945,0.01398,0.01565,0.00384,13.14,29.26,85.51,521.7,0.1688,0.266,0.2873,0.1218,0.2806,0.09097
B,12.36,18.54,79.01,466.7,0.08477,0.06815,0.02643,0.01921,0.1602,0.06066,0.1199,0.8944,0.8484,9.227,0.003457,0.01047,0.01167,0.005558,0.01251,0.001356,13.29,27.49,85.56,544.1,0.1184,0.1963,0.1937,0.08442,0.2983,0.07185
M,22.27,19.67,152.8,1509,0.1326,0.2768,0.4264,0.1823,0.2556,0.07039,1.215,1.545,10.05,170,0.006515,0.08668,0.104,0.0248,0.03112,0.005037,28.4,28.01,206.8,2360,0.1701,0.6997,0.9608,0.291,0.4055,0.09789
B,11.34,21.26,72.48,396.5,0.08759,0.06575,0.05133,0.01899,0.1487,0.06529,0.2344,0.9861,1.597,16.41,0.009113,0.01557,0.02443,0.006435,0.01568,0.002477,13.01,29.15,83.99,518.1,0.1699,0.2196,0.312,0.08278,0.2829,0.08832
B,9.777,16.99,62.5,290.2,0.1037,0.08404,0.04334,0.01778,0.1584,0.07065,0.403,1.424,2.747,22.87,0.01385,0.02932,0.02722,0.01023,0.03281,0.004638,11.05,21.47,71.68,367,0.1467,0.1765,0.13,0.05334,0.2533,0.08468
B,12.63,20.76,82.15,480.4,0.09933,0.1209,0.1065,0.06021,0.1735,0.0707,0.3424,1.803,2.711,20.48,0.01291,0.04042,0.05101,0.02295,0.02144,0.005891,13.33,25.47,89,527.4,0.1287,0.225,0.2216,0.1105,0.2226,0.08486
B,14.26,19.65,97.83,629.9,0.07837,0.2233,0.3003,0.07798,0.1704,0.07769,0.3628,1.49,3.399,29.25,0.005298,0.07446,0.1435,0.02292,0.02566,0.01298,15.3,23.73,107,709,0.08949,0.4193,0.6783,0.1505,0.2398,0.1082
B,10.51,20.19,68.64,334.2,0.1122,0.1303,0.06476,0.03068,0.1922,0.07782,0.3336,1.86,2.041,19.91,0.01188,0.03747,0.04591,0.01544,0.02287,0.006792,11.16,22.75,72.62,374.4,0.13,0.2049,0.1295,0.06136,0.2383,0.09026
B,8.726,15.83,55.84,230.9,0.115,0.08201,0.04132,0.01924,0.1649,0.07633,0.1665,0.5864,1.354,8.966,0.008261,0.02213,0.03259,0.0104,0.01708,0.003806,9.628,19.62,64.48,284.4,0.1724,0.2364,0.2456,0.105,0.2926,0.1017
B,11.93,21.53,76.53,438.6,0.09768,0.07849,0.03328,0.02008,0.1688,0.06194,0.3118,0.9227,2,24.79,0.007803,0.02507,0.01835,0.007711,0.01278,0.003856,13.67,26.15,87.54,583,0.15,0.2399,0.1503,0.07247,0.2438,0.08541
B,8.95,15.76,58.74,245.2,0.09462,0.1243,0.09263,0.02308,0.1305,0.07163,0.3132,0.9789,3.28,16.94,0.01835,0.0676,0.09263,0.02308,0.02384,0.005601,9.414,17.07,63.34,270,0.1179,0.1879,0.1544,0.03846,0.1652,0.07722
M,14.87,16.67,98.64,682.5,0.1162,0.1649,0.169,0.08923,0.2157,0.06768,0.4266,0.9489,2.989,41.18,0.006985,0.02563,0.03011,0.01271,0.01602,0.003884,18.81,27.37,127.1,1095,0.1878,0.448,0.4704,0.2027,0.3585,0.1065
M,15.78,22.91,105.7,782.6,0.1155,0.1752,0.2133,0.09479,0.2096,0.07331,0.552,1.072,3.598,58.63,0.008699,0.03976,0.0595,0.0139,0.01495,0.005984,20.19,30.5,130.3,1272,0.1855,0.4925,0.7356,0.2034,0.3274,0.1252
M,17.95,20.01,114.2,982,0.08402,0.06722,0.07293,0.05596,0.2129,0.05025,0.5506,1.214,3.357,54.04,0.004024,0.008422,0.02291,0.009863,0.05014,0.001902,20.58,27.83,129.2,1261,0.1072,0.1202,0.2249,0.1185,0.4882,0.06111
B,11.41,10.82,73.34,403.3,0.09373,0.06685,0.03512,0.02623,0.1667,0.06113,0.1408,0.4607,1.103,10.5,0.00604,0.01529,0.01514,0.00646,0.01344,0.002206,12.82,15.97,83.74,510.5,0.1548,0.239,0.2102,0.08958,0.3016,0.08523
M,18.66,17.12,121.4,1077,0.1054,0.11,0.1457,0.08665,0.1966,0.06213,0.7128,1.581,4.895,90.47,0.008102,0.02101,0.03342,0.01601,0.02045,0.00457,22.25,24.9,145.4,1549,0.1503,0.2291,0.3272,0.1674,0.2894,0.08456
M,24.25,20.2,166.2,1761,0.1447,0.2867,0.4268,0.2012,0.2655,0.06877,1.509,3.12,9.807,233,0.02333,0.09806,0.1278,0.01822,0.04547,0.009875,26.02,23.99,180.9,2073,0.1696,0.4244,0.5803,0.2248,0.3222,0.08009
B,14.5,10.89,94.28,640.7,0.1101,0.1099,0.08842,0.05778,0.1856,0.06402,0.2929,0.857,1.928,24.19,0.003818,0.01276,0.02882,0.012,0.0191,0.002808,15.7,15.98,102.8,745.5,0.1313,0.1788,0.256,0.1221,0.2889,0.08006
B,13.37,16.39,86.1,553.5,0.07115,0.07325,0.08092,0.028,0.1422,0.05823,0.1639,1.14,1.223,14.66,0.005919,0.0327,0.04957,0.01038,0.01208,0.004076,14.26,22.75,91.99,632.1,0.1025,0.2531,0.3308,0.08978,0.2048,0.07628
B,13.85,17.21,88.44,588.7,0.08785,0.06136,0.0142,0.01141,0.1614,0.0589,0.2185,0.8561,1.495,17.91,0.004599,0.009169,0.009127,0.004814,0.01247,0.001708,15.49,23.58,100.3,725.9,0.1157,0.135,0.08115,0.05104,0.2364,0.07182
M,13.61,24.69,87.76,572.6,0.09258,0.07862,0.05285,0.03085,0.1761,0.0613,0.231,1.005,1.752,19.83,0.004088,0.01174,0.01796,0.00688,0.01323,0.001465,16.89,35.64,113.2,848.7,0.1471,0.2884,0.3796,0.1329,0.347,0.079
M,19,18.91,123.4,1138,0.08217,0.08028,0.09271,0.05627,0.1946,0.05044,0.6896,1.342,5.216,81.23,0.004428,0.02731,0.0404,0.01361,0.0203,0.002686,22.32,25.73,148.2,1538,0.1021,0.2264,0.3207,0.1218,0.2841,0.06541
B,15.1,16.39,99.58,674.5,0.115,0.1807,0.1138,0.08534,0.2001,0.06467,0.4309,1.068,2.796,39.84,0.009006,0.04185,0.03204,0.02258,0.02353,0.004984,16.11,18.33,105.9,762.6,0.1386,0.2883,0.196,0.1423,0.259,0.07779
M,19.79,25.12,130.4,1192,0.1015,0.1589,0.2545,0.1149,0.2202,0.06113,0.4953,1.199,2.765,63.33,0.005033,0.03179,0.04755,0.01043,0.01578,0.003224,22.63,33.58,148.7,1589,0.1275,0.3861,0.5673,0.1732,0.3305,0.08465
B,12.19,13.29,79.08,455.8,0.1066,0.09509,0.02855,0.02882,0.188,0.06471,0.2005,0.8163,1.973,15.24,0.006773,0.02456,0.01018,0.008094,0.02662,0.004143,13.34,17.81,91.38,545.2,0.1427,0.2585,0.09915,0.08187,0.3469,0.09241
M,15.46,19.48,101.7,748.9,0.1092,0.1223,0.1466,0.08087,0.1931,0.05796,0.4743,0.7859,3.094,48.31,0.00624,0.01484,0.02813,0.01093,0.01397,0.002461,19.26,26,124.9,1156,0.1546,0.2394,0.3791,0.1514,0.2837,0.08019
M,16.16,21.54,106.2,809.8,0.1008,0.1284,0.1043,0.05613,0.216,0.05891,0.4332,1.265,2.844,43.68,0.004877,0.01952,0.02219,0.009231,0.01535,0.002373,19.47,31.68,129.7,1175,0.1395,0.3055,0.2992,0.1312,0.348,0.07619
B,15.71,13.93,102,761.7,0.09462,0.09462,0.07135,0.05933,0.1816,0.05723,0.3117,0.8155,1.972,27.94,0.005217,0.01515,0.01678,0.01268,0.01669,0.00233,17.5,19.25,114.3,922.8,0.1223,0.1949,0.1709,0.1374,0.2723,0.07071
M,18.45,21.91,120.2,1075,0.0943,0.09709,0.1153,0.06847,0.1692,0.05727,0.5959,1.202,3.766,68.35,0.006001,0.01422,0.02855,0.009148,0.01492,0.002205,22.52,31.39,145.6,1590,0.1465,0.2275,0.3965,0.1379,0.3109,0.0761
M,12.77,22.47,81.72,506.3,0.09055,0.05761,0.04711,0.02704,0.1585,0.06065,0.2367,1.38,1.457,19.87,0.007499,0.01202,0.02332,0.00892,0.01647,0.002629,14.49,33.37,92.04,653.6,0.1419,0.1523,0.2177,0.09331,0.2829,0.08067
B,11.71,16.67,74.72,423.6,0.1051,0.06095,0.03592,0.026,0.1339,0.05945,0.4489,2.508,3.258,34.37,0.006578,0.0138,0.02662,0.01307,0.01359,0.003707,13.33,25.48,86.16,546.7,0.1271,0.1028,0.1046,0.06968,0.1712,0.07343
B,11.43,15.39,73.06,399.8,0.09639,0.06889,0.03503,0.02875,0.1734,0.05865,0.1759,0.9938,1.143,12.67,0.005133,0.01521,0.01434,0.008602,0.01501,0.001588,12.32,22.02,79.93,462,0.119,0.1648,0.1399,0.08476,0.2676,0.06765
M,14.95,17.57,96.85,678.1,0.1167,0.1305,0.1539,0.08624,0.1957,0.06216,1.296,1.452,8.419,101.9,0.01,0.0348,0.06577,0.02801,0.05168,0.002887,18.55,21.43,121.4,971.4,0.1411,0.2164,0.3355,0.1667,0.3414,0.07147
B,11.28,13.39,73,384.8,0.1164,0.1136,0.04635,0.04796,0.1771,0.06072,0.3384,1.343,1.851,26.33,0.01127,0.03498,0.02187,0.01965,0.0158,0.003442,11.92,15.77,76.53,434,0.1367,0.1822,0.08669,0.08611,0.2102,0.06784
B,9.738,11.97,61.24,288.5,0.0925,0.04102,0,0,0.1903,0.06422,0.1988,0.496,1.218,12.26,0.00604,0.005656,0,0,0.02277,0.00322,10.62,14.1,66.53,342.9,0.1234,0.07204,0,0,0.3105,0.08151
M,16.11,18.05,105.1,813,0.09721,0.1137,0.09447,0.05943,0.1861,0.06248,0.7049,1.332,4.533,74.08,0.00677,0.01938,0.03067,0.01167,0.01875,0.003434,19.92,25.27,129,1233,0.1314,0.2236,0.2802,0.1216,0.2792,0.08158
B,11.43,17.31,73.66,398,0.1092,0.09486,0.02031,0.01861,0.1645,0.06562,0.2843,1.908,1.937,21.38,0.006664,0.01735,0.01158,0.00952,0.02282,0.003526,12.78,26.76,82.66,503,0.1413,0.1792,0.07708,0.06402,0.2584,0.08096
B,12.9,15.92,83.74,512.2,0.08677,0.09509,0.04894,0.03088,0.1778,0.06235,0.2143,0.7712,1.689,16.64,0.005324,0.01563,0.0151,0.007584,0.02104,0.001887,14.48,21.82,97.17,643.8,0.1312,0.2548,0.209,0.1012,0.3549,0.08118
B,10.75,14.97,68.26,355.3,0.07793,0.05139,0.02251,0.007875,0.1399,0.05688,0.2525,1.239,1.806,17.74,0.006547,0.01781,0.02018,0.005612,0.01671,0.00236,11.95,20.72,77.79,441.2,0.1076,0.1223,0.09755,0.03413,0.23,0.06769
B,11.9,14.65,78.11,432.8,0.1152,0.1296,0.0371,0.03003,0.1995,0.07839,0.3962,0.6538,3.021,25.03,0.01017,0.04741,0.02789,0.0111,0.03127,0.009423,13.15,16.51,86.26,509.6,0.1424,0.2517,0.0942,0.06042,0.2727,0.1036
M,11.8,16.58,78.99,432,0.1091,0.17,0.1659,0.07415,0.2678,0.07371,0.3197,1.426,2.281,24.72,0.005427,0.03633,0.04649,0.01843,0.05628,0.004635,13.74,26.38,91.93,591.7,0.1385,0.4092,0.4504,0.1865,0.5774,0.103
B,14.95,18.77,97.84,689.5,0.08138,0.1167,0.0905,0.03562,0.1744,0.06493,0.422,1.909,3.271,39.43,0.00579,0.04877,0.05303,0.01527,0.03356,0.009368,16.25,25.47,107.1,809.7,0.0997,0.2521,0.25,0.08405,0.2852,0.09218
B,14.44,15.18,93.97,640.1,0.0997,0.1021,0.08487,0.05532,0.1724,0.06081,0.2406,0.7394,2.12,21.2,0.005706,0.02297,0.03114,0.01493,0.01454,0.002528,15.85,19.85,108.6,766.9,0.1316,0.2735,0.3103,0.1599,0.2691,0.07683
B,13.74,17.91,88.12,585,0.07944,0.06376,0.02881,0.01329,0.1473,0.0558,0.25,0.7574,1.573,21.47,0.002838,0.01592,0.0178,0.005828,0.01329,0.001976,15.34,22.46,97.19,725.9,0.09711,0.1824,0.1564,0.06019,0.235,0.07014
B,13,20.78,83.51,519.4,0.1135,0.07589,0.03136,0.02645,0.254,0.06087,0.4202,1.322,2.873,34.78,0.007017,0.01142,0.01949,0.01153,0.02951,0.001533,14.16,24.11,90.82,616.7,0.1297,0.1105,0.08112,0.06296,0.3196,0.06435
B,8.219,20.7,53.27,203.9,0.09405,0.1305,0.1321,0.02168,0.2222,0.08261,0.1935,1.962,1.243,10.21,0.01243,0.05416,0.07753,0.01022,0.02309,0.01178,9.092,29.72,58.08,249.8,0.163,0.431,0.5381,0.07879,0.3322,0.1486
B,9.731,15.34,63.78,300.2,0.1072,0.1599,0.4108,0.07857,0.2548,0.09296,0.8245,2.664,4.073,49.85,0.01097,0.09586,0.396,0.05279,0.03546,0.02984,11.02,19.49,71.04,380.5,0.1292,0.2772,0.8216,0.1571,0.3108,0.1259
B,11.15,13.08,70.87,381.9,0.09754,0.05113,0.01982,0.01786,0.183,0.06105,0.2251,0.7815,1.429,15.48,0.009019,0.008985,0.01196,0.008232,0.02388,0.001619,11.99,16.3,76.25,440.8,0.1341,0.08971,0.07116,0.05506,0.2859,0.06772
B,13.15,15.34,85.31,538.9,0.09384,0.08498,0.09293,0.03483,0.1822,0.06207,0.271,0.7927,1.819,22.79,0.008584,0.02017,0.03047,0.009536,0.02769,0.003479,14.77,20.5,97.67,677.3,0.1478,0.2256,0.3009,0.09722,0.3849,0.08633
B,12.25,17.94,78.27,460.3,0.08654,0.06679,0.03885,0.02331,0.197,0.06228,0.22,0.9823,1.484,16.51,0.005518,0.01562,0.01994,0.007924,0.01799,0.002484,13.59,25.22,86.6,564.2,0.1217,0.1788,0.1943,0.08211,0.3113,0.08132
M,17.68,20.74,117.4,963.7,0.1115,0.1665,0.1855,0.1054,0.1971,0.06166,0.8113,1.4,5.54,93.91,0.009037,0.04954,0.05206,0.01841,0.01778,0.004968,20.47,25.11,132.9,1302,0.1418,0.3498,0.3583,0.1515,0.2463,0.07738
B,16.84,19.46,108.4,880.2,0.07445,0.07223,0.0515,0.02771,0.1844,0.05268,0.4789,2.06,3.479,46.61,0.003443,0.02661,0.03056,0.0111,0.0152,0.001519,18.22,28.07,120.3,1032,0.08774,0.171,0.1882,0.08436,0.2527,0.05972
B,12.06,12.74,76.84,448.6,0.09311,0.05241,0.01972,0.01963,0.159,0.05907,0.1822,0.7285,1.171,13.25,0.005528,0.009789,0.008342,0.006273,0.01465,0.00253,13.14,18.41,84.08,532.8,0.1275,0.1232,0.08636,0.07025,0.2514,0.07898
B,10.9,12.96,68.69,366.8,0.07515,0.03718,0.00309,0.006588,0.1442,0.05743,0.2818,0.7614,1.808,18.54,0.006142,0.006134,0.001835,0.003576,0.01637,0.002665,12.36,18.2,78.07,470,0.1171,0.08294,0.01854,0.03953,0.2738,0.07685
B,11.75,20.18,76.1,419.8,0.1089,0.1141,0.06843,0.03738,0.1993,0.06453,0.5018,1.693,3.926,38.34,0.009433,0.02405,0.04167,0.01152,0.03397,0.005061,13.32,26.21,88.91,543.9,0.1358,0.1892,0.1956,0.07909,0.3168,0.07987
M,19.19,15.94,126.3,1157,0.08694,0.1185,0.1193,0.09667,0.1741,0.05176,1,0.6336,6.971,119.3,0.009406,0.03055,0.04344,0.02794,0.03156,0.003362,22.03,17.81,146.6,1495,0.1124,0.2016,0.2264,0.1777,0.2443,0.06251
M,19.59,18.15,130.7,1214,0.112,0.1666,0.2508,0.1286,0.2027,0.06082,0.7364,1.048,4.792,97.07,0.004057,0.02277,0.04029,0.01303,0.01686,0.003318,26.73,26.39,174.9,2232,0.1438,0.3846,0.681,0.2247,0.3643,0.09223
B,12.34,22.22,79.85,464.5,0.1012,0.1015,0.0537,0.02822,0.1551,0.06761,0.2949,1.656,1.955,21.55,0.01134,0.03175,0.03125,0.01135,0.01879,0.005348,13.58,28.68,87.36,553,0.1452,0.2338,0.1688,0.08194,0.2268,0.09082
M,23.27,22.04,152.1,1686,0.08439,0.1145,0.1324,0.09702,0.1801,0.05553,0.6642,0.8561,4.603,97.85,0.00491,0.02544,0.02822,0.01623,0.01956,0.00374,28.01,28.22,184.2,2403,0.1228,0.3583,0.3948,0.2346,0.3589,0.09187
B,14.97,19.76,95.5,690.2,0.08421,0.05352,0.01947,0.01939,0.1515,0.05266,0.184,1.065,1.286,16.64,0.003634,0.007983,0.008268,0.006432,0.01924,0.00152,15.98,25.82,102.3,782.1,0.1045,0.09995,0.0775,0.05754,0.2646,0.06085
B,10.8,9.71,68.77,357.6,0.09594,0.05736,0.02531,0.01698,0.1381,0.064,0.1728,0.4064,1.126,11.48,0.007809,0.009816,0.01099,0.005344,0.01254,0.00212,11.6,12.02,73.66,414,0.1436,0.1257,0.1047,0.04603,0.209,0.07699
M,16.78,18.8,109.3,886.3,0.08865,0.09182,0.08422,0.06576,0.1893,0.05534,0.599,1.391,4.129,67.34,0.006123,0.0247,0.02626,0.01604,0.02091,0.003493,20.05,26.3,130.7,1260,0.1168,0.2119,0.2318,0.1474,0.281,0.07228
M,17.47,24.68,116.1,984.6,0.1049,0.1603,0.2159,0.1043,0.1538,0.06365,1.088,1.41,7.337,122.3,0.006174,0.03634,0.04644,0.01569,0.01145,0.00512,23.14,32.33,155.3,1660,0.1376,0.383,0.489,0.1721,0.216,0.093
B,14.97,16.95,96.22,685.9,0.09855,0.07885,0.02602,0.03781,0.178,0.0565,0.2713,1.217,1.893,24.28,0.00508,0.0137,0.007276,0.009073,0.0135,0.001706,16.11,23,104.6,793.7,0.1216,0.1637,0.06648,0.08485,0.2404,0.06428
B,12.32,12.39,78.85,464.1,0.1028,0.06981,0.03987,0.037,0.1959,0.05955,0.236,0.6656,1.67,17.43,0.008045,0.0118,0.01683,0.01241,0.01924,0.002248,13.5,15.64,86.97,549.1,0.1385,0.1266,0.1242,0.09391,0.2827,0.06771
M,13.43,19.63,85.84,565.4,0.09048,0.06288,0.05858,0.03438,0.1598,0.05671,0.4697,1.147,3.142,43.4,0.006003,0.01063,0.02151,0.009443,0.0152,0.001868,17.98,29.87,116.6,993.6,0.1401,0.1546,0.2644,0.116,0.2884,0.07371
M,15.46,11.89,102.5,736.9,0.1257,0.1555,0.2032,0.1097,0.1966,0.07069,0.4209,0.6583,2.805,44.64,0.005393,0.02321,0.04303,0.0132,0.01792,0.004168,18.79,17.04,125,1102,0.1531,0.3583,0.583,0.1827,0.3216,0.101
B,11.08,14.71,70.21,372.7,0.1006,0.05743,0.02363,0.02583,0.1566,0.06669,0.2073,1.805,1.377,19.08,0.01496,0.02121,0.01453,0.01583,0.03082,0.004785,11.35,16.82,72.01,396.5,0.1216,0.0824,0.03938,0.04306,0.1902,0.07313
B,10.66,15.15,67.49,349.6,0.08792,0.04302,0,0,0.1928,0.05975,0.3309,1.925,2.155,21.98,0.008713,0.01017,0,0,0.03265,0.001002,11.54,19.2,73.2,408.3,0.1076,0.06791,0,0,0.271,0.06164
B,8.671,14.45,54.42,227.2,0.09138,0.04276,0,0,0.1722,0.06724,0.2204,0.7873,1.435,11.36,0.009172,0.008007,0,0,0.02711,0.003399,9.262,17.04,58.36,259.2,0.1162,0.07057,0,0,0.2592,0.07848
B,9.904,18.06,64.6,302.4,0.09699,0.1294,0.1307,0.03716,0.1669,0.08116,0.4311,2.261,3.132,27.48,0.01286,0.08808,0.1197,0.0246,0.0388,0.01792,11.26,24.39,73.07,390.2,0.1301,0.295,0.3486,0.0991,0.2614,0.1162
M,16.46,20.11,109.3,832.9,0.09831,0.1556,0.1793,0.08866,0.1794,0.06323,0.3037,1.284,2.482,31.59,0.006627,0.04094,0.05371,0.01813,0.01682,0.004584,17.79,28.45,123.5,981.2,0.1415,0.4667,0.5862,0.2035,0.3054,0.09519
B,13.01,22.22,82.01,526.4,0.06251,0.01938,0.001595,0.001852,0.1395,0.05234,0.1731,1.142,1.101,14.34,0.003418,0.002252,0.001595,0.001852,0.01613,0.0009683,14,29.02,88.18,608.8,0.08125,0.03432,0.007977,0.009259,0.2295,0.05843
B,12.81,13.06,81.29,508.8,0.08739,0.03774,0.009193,0.0133,0.1466,0.06133,0.2889,0.9899,1.778,21.79,0.008534,0.006364,0.00618,0.007408,0.01065,0.003351,13.63,16.15,86.7,570.7,0.1162,0.05445,0.02758,0.0399,0.1783,0.07319
M,27.22,21.87,182.1,2250,0.1094,0.1914,0.2871,0.1878,0.18,0.0577,0.8361,1.481,5.82,128.7,0.004631,0.02537,0.03109,0.01241,0.01575,0.002747,33.12,32.85,220.8,3216,0.1472,0.4034,0.534,0.2688,0.2856,0.08082
M,21.09,26.57,142.7,1311,0.1141,0.2832,0.2487,0.1496,0.2395,0.07398,0.6298,0.7629,4.414,81.46,0.004253,0.04759,0.03872,0.01567,0.01798,0.005295,26.68,33.48,176.5,2089,0.1491,0.7584,0.678,0.2903,0.4098,0.1284
M,15.7,20.31,101.2,766.6,0.09597,0.08799,0.06593,0.05189,0.1618,0.05549,0.3699,1.15,2.406,40.98,0.004626,0.02263,0.01954,0.009767,0.01547,0.00243,20.11,32.82,129.3,1269,0.1414,0.3547,0.2902,0.1541,0.3437,0.08631
B,11.41,14.92,73.53,402,0.09059,0.08155,0.06181,0.02361,0.1167,0.06217,0.3344,1.108,1.902,22.77,0.007356,0.03728,0.05915,0.01712,0.02165,0.004784,12.37,17.7,79.12,467.2,0.1121,0.161,0.1648,0.06296,0.1811,0.07427
M,15.28,22.41,98.92,710.6,0.09057,0.1052,0.05375,0.03263,0.1727,0.06317,0.2054,0.4956,1.344,19.53,0.00329,0.01395,0.01774,0.006009,0.01172,0.002575,17.8,28.03,113.8,973.1,0.1301,0.3299,0.363,0.1226,0.3175,0.09772
B,10.08,15.11,63.76,317.5,0.09267,0.04695,0.001597,0.002404,0.1703,0.06048,0.4245,1.268,2.68,26.43,0.01439,0.012,0.001597,0.002404,0.02538,0.00347,11.87,21.18,75.39,437,0.1521,0.1019,0.00692,0.01042,0.2933,0.07697
M,18.31,18.58,118.6,1041,0.08588,0.08468,0.08169,0.05814,0.1621,0.05425,0.2577,0.4757,1.817,28.92,0.002866,0.009181,0.01412,0.006719,0.01069,0.001087,21.31,26.36,139.2,1410,0.1234,0.2445,0.3538,0.1571,0.3206,0.06938
B,11.71,17.19,74.68,420.3,0.09774,0.06141,0.03809,0.03239,0.1516,0.06095,0.2451,0.7655,1.742,17.86,0.006905,0.008704,0.01978,0.01185,0.01897,0.001671,13.01,21.39,84.42,521.5,0.1323,0.104,0.1521,0.1099,0.2572,0.07097
B,11.81,17.39,75.27,428.9,0.1007,0.05562,0.02353,0.01553,0.1718,0.0578,0.1859,1.926,1.011,14.47,0.007831,0.008776,0.01556,0.00624,0.03139,0.001988,12.57,26.48,79.57,489.5,0.1356,0.1,0.08803,0.04306,0.32,0.06576
B,12.3,15.9,78.83,463.7,0.0808,0.07253,0.03844,0.01654,0.1667,0.05474,0.2382,0.8355,1.687,18.32,0.005996,0.02212,0.02117,0.006433,0.02025,0.001725,13.35,19.59,86.65,546.7,0.1096,0.165,0.1423,0.04815,0.2482,0.06306
M,14.22,23.12,94.37,609.9,0.1075,0.2413,0.1981,0.06618,0.2384,0.07542,0.286,2.11,2.112,31.72,0.00797,0.1354,0.1166,0.01666,0.05113,0.01172,15.74,37.18,106.4,762.4,0.1533,0.9327,0.8488,0.1772,0.5166,0.1446
B,12.77,21.41,82.02,507.4,0.08749,0.06601,0.03112,0.02864,0.1694,0.06287,0.7311,1.748,5.118,53.65,0.004571,0.0179,0.02176,0.01757,0.03373,0.005875,13.75,23.5,89.04,579.5,0.09388,0.08978,0.05186,0.04773,0.2179,0.06871
B,9.72,18.22,60.73,288.1,0.0695,0.02344,0,0,0.1653,0.06447,0.3539,4.885,2.23,21.69,0.001713,0.006736,0,0,0.03799,0.001688,9.968,20.83,62.25,303.8,0.07117,0.02729,0,0,0.1909,0.06559
M,12.34,26.86,81.15,477.4,0.1034,0.1353,0.1085,0.04562,0.1943,0.06937,0.4053,1.809,2.642,34.44,0.009098,0.03845,0.03763,0.01321,0.01878,0.005672,15.65,39.34,101.7,768.9,0.1785,0.4706,0.4425,0.1459,0.3215,0.1205
M,14.86,23.21,100.4,671.4,0.1044,0.198,0.1697,0.08878,0.1737,0.06672,0.2796,0.9622,3.591,25.2,0.008081,0.05122,0.05551,0.01883,0.02545,0.004312,16.08,27.78,118.6,784.7,0.1316,0.4648,0.4589,0.1727,0.3,0.08701
B,12.91,16.33,82.53,516.4,0.07941,0.05366,0.03873,0.02377,0.1829,0.05667,0.1942,0.9086,1.493,15.75,0.005298,0.01587,0.02321,0.00842,0.01853,0.002152,13.88,22,90.81,600.6,0.1097,0.1506,0.1764,0.08235,0.3024,0.06949
M,13.77,22.29,90.63,588.9,0.12,0.1267,0.1385,0.06526,0.1834,0.06877,0.6191,2.112,4.906,49.7,0.0138,0.03348,0.04665,0.0206,0.02689,0.004306,16.39,34.01,111.6,806.9,0.1737,0.3122,0.3809,0.1673,0.308,0.09333
M,18.08,21.84,117.4,1024,0.07371,0.08642,0.1103,0.05778,0.177,0.0534,0.6362,1.305,4.312,76.36,0.00553,0.05296,0.0611,0.01444,0.0214,0.005036,19.76,24.7,129.1,1228,0.08822,0.1963,0.2535,0.09181,0.2369,0.06558
M,19.18,22.49,127.5,1148,0.08523,0.1428,0.1114,0.06772,0.1767,0.05529,0.4357,1.073,3.833,54.22,0.005524,0.03698,0.02706,0.01221,0.01415,0.003397,23.36,32.06,166.4,1688,0.1322,0.5601,0.3865,0.1708,0.3193,0.09221
M,14.45,20.22,94.49,642.7,0.09872,0.1206,0.118,0.0598,0.195,0.06466,0.2092,0.6509,1.446,19.42,0.004044,0.01597,0.02,0.007303,0.01522,0.001976,18.33,30.12,117.9,1044,0.1552,0.4056,0.4967,0.1838,0.4753,0.1013
B,12.23,19.56,78.54,461,0.09586,0.08087,0.04187,0.04107,0.1979,0.06013,0.3534,1.326,2.308,27.24,0.007514,0.01779,0.01401,0.0114,0.01503,0.003338,14.44,28.36,92.15,638.4,0.1429,0.2042,0.1377,0.108,0.2668,0.08174
M,17.54,19.32,115.1,951.6,0.08968,0.1198,0.1036,0.07488,0.1506,0.05491,0.3971,0.8282,3.088,40.73,0.00609,0.02569,0.02713,0.01345,0.01594,0.002658,20.42,25.84,139.5,1239,0.1381,0.342,0.3508,0.1939,0.2928,0.07867
M,23.29,26.67,158.9,1685,0.1141,0.2084,0.3523,0.162,0.22,0.06229,0.5539,1.56,4.667,83.16,0.009327,0.05121,0.08958,0.02465,0.02175,0.005195,25.12,32.68,177,1986,0.1536,0.4167,0.7892,0.2733,0.3198,0.08762
M,13.81,23.75,91.56,597.8,0.1323,0.1768,0.1558,0.09176,0.2251,0.07421,0.5648,1.93,3.909,52.72,0.008824,0.03108,0.03112,0.01291,0.01998,0.004506,19.2,41.85,128.5,1153,0.2226,0.5209,0.4646,0.2013,0.4432,0.1086
B,12.47,18.6,81.09,481.9,0.09965,0.1058,0.08005,0.03821,0.1925,0.06373,0.3961,1.044,2.497,30.29,0.006953,0.01911,0.02701,0.01037,0.01782,0.003586,14.97,24.64,96.05,677.9,0.1426,0.2378,0.2671,0.1015,0.3014,0.0875
M,15.12,16.68,98.78,716.6,0.08876,0.09588,0.0755,0.04079,0.1594,0.05986,0.2711,0.3621,1.974,26.44,0.005472,0.01919,0.02039,0.00826,0.01523,0.002881,17.77,20.24,117.7,989.5,0.1491,0.3331,0.3327,0.1252,0.3415,0.0974
B,9.876,17.27,62.92,295.4,0.1089,0.07232,0.01756,0.01952,0.1934,0.06285,0.2137,1.342,1.517,12.33,0.009719,0.01249,0.007975,0.007527,0.0221,0.002472,10.42,23.22,67.08,331.6,0.1415,0.1247,0.06213,0.05588,0.2989,0.0738
M,17.01,20.26,109.7,904.3,0.08772,0.07304,0.0695,0.0539,0.2026,0.05223,0.5858,0.8554,4.106,68.46,0.005038,0.01503,0.01946,0.01123,0.02294,0.002581,19.8,25.05,130,1210,0.1111,0.1486,0.1932,0.1096,0.3275,0.06469
B,13.11,22.54,87.02,529.4,0.1002,0.1483,0.08705,0.05102,0.185,0.0731,0.1931,0.9223,1.491,15.09,0.005251,0.03041,0.02526,0.008304,0.02514,0.004198,14.55,29.16,99.48,639.3,0.1349,0.4402,0.3162,0.1126,0.4128,0.1076
B,15.27,12.91,98.17,725.5,0.08182,0.0623,0.05892,0.03157,0.1359,0.05526,0.2134,0.3628,1.525,20,0.004291,0.01236,0.01841,0.007373,0.009539,0.001656,17.38,15.92,113.7,932.7,0.1222,0.2186,0.2962,0.1035,0.232,0.07474
M,20.58,22.14,134.7,1290,0.0909,0.1348,0.164,0.09561,0.1765,0.05024,0.8601,1.48,7.029,111.7,0.008124,0.03611,0.05489,0.02765,0.03176,0.002365,23.24,27.84,158.3,1656,0.1178,0.292,0.3861,0.192,0.2909,0.05865
B,11.84,18.94,75.51,428,0.08871,0.069,0.02669,0.01393,0.1533,0.06057,0.2222,0.8652,1.444,17.12,0.005517,0.01727,0.02045,0.006747,0.01616,0.002922,13.3,24.99,85.22,546.3,0.128,0.188,0.1471,0.06913,0.2535,0.07993
M,28.11,18.47,188.5,2499,0.1142,0.1516,0.3201,0.1595,0.1648,0.05525,2.873,1.476,21.98,525.6,0.01345,0.02772,0.06389,0.01407,0.04783,0.004476,28.11,18.47,188.5,2499,0.1142,0.1516,0.3201,0.1595,0.1648,0.05525
M,17.42,25.56,114.5,948,0.1006,0.1146,0.1682,0.06597,0.1308,0.05866,0.5296,1.667,3.767,58.53,0.03113,0.08555,0.1438,0.03927,0.02175,0.01256,18.07,28.07,120.4,1021,0.1243,0.1793,0.2803,0.1099,0.1603,0.06818
M,14.19,23.81,92.87,610.7,0.09463,0.1306,0.1115,0.06462,0.2235,0.06433,0.4207,1.845,3.534,31,0.01088,0.0371,0.03688,0.01627,0.04499,0.004768,16.86,34.85,115,811.3,0.1559,0.4059,0.3744,0.1772,0.4724,0.1026
M,13.86,16.93,90.96,578.9,0.1026,0.1517,0.09901,0.05602,0.2106,0.06916,0.2563,1.194,1.933,22.69,0.00596,0.03438,0.03909,0.01435,0.01939,0.00456,15.75,26.93,104.4,750.1,0.146,0.437,0.4636,0.1654,0.363,0.1059
B,11.89,18.35,77.32,432.2,0.09363,0.1154,0.06636,0.03142,0.1967,0.06314,0.2963,1.563,2.087,21.46,0.008872,0.04192,0.05946,0.01785,0.02793,0.004775,13.25,27.1,86.2,531.2,0.1405,0.3046,0.2806,0.1138,0.3397,0.08365
B,10.2,17.48,65.05,321.2,0.08054,0.05907,0.05774,0.01071,0.1964,0.06315,0.3567,1.922,2.747,22.79,0.00468,0.0312,0.05774,0.01071,0.0256,0.004613,11.48,24.47,75.4,403.7,0.09527,0.1397,0.1925,0.03571,0.2868,0.07809
M,19.8,21.56,129.7,1230,0.09383,0.1306,0.1272,0.08691,0.2094,0.05581,0.9553,1.186,6.487,124.4,0.006804,0.03169,0.03446,0.01712,0.01897,0.004045,25.73,28.64,170.3,2009,0.1353,0.3235,0.3617,0.182,0.307,0.08255
M,19.53,32.47,128,1223,0.0842,0.113,0.1145,0.06637,0.1428,0.05313,0.7392,1.321,4.722,109.9,0.005539,0.02644,0.02664,0.01078,0.01332,0.002256,27.9,45.41,180.2,2477,0.1408,0.4097,0.3995,0.1625,0.2713,0.07568
B,13.65,13.16,87.88,568.9,0.09646,0.08711,0.03888,0.02563,0.136,0.06344,0.2102,0.4336,1.391,17.4,0.004133,0.01695,0.01652,0.006659,0.01371,0.002735,15.34,16.35,99.71,706.2,0.1311,0.2474,0.1759,0.08056,0.238,0.08718
B,13.56,13.9,88.59,561.3,0.1051,0.1192,0.0786,0.04451,0.1962,0.06303,0.2569,0.4981,2.011,21.03,0.005851,0.02314,0.02544,0.00836,0.01842,0.002918,14.98,17.13,101.1,686.6,0.1376,0.2698,0.2577,0.0909,0.3065,0.08177
B,10.18,17.53,65.12,313.1,0.1061,0.08502,0.01768,0.01915,0.191,0.06908,0.2467,1.217,1.641,15.05,0.007899,0.014,0.008534,0.007624,0.02637,0.003761,11.17,22.84,71.94,375.6,0.1406,0.144,0.06572,0.05575,0.3055,0.08797
M,15.75,20.25,102.6,761.3,0.1025,0.1204,0.1147,0.06462,0.1935,0.06303,0.3473,0.9209,2.244,32.19,0.004766,0.02374,0.02384,0.008637,0.01772,0.003131,19.56,30.29,125.9,1088,0.1552,0.448,0.3976,0.1479,0.3993,0.1064
B,13.27,17.02,84.55,546.4,0.08445,0.04994,0.03554,0.02456,0.1496,0.05674,0.2927,0.8907,2.044,24.68,0.006032,0.01104,0.02259,0.009057,0.01482,0.002496,15.14,23.6,98.84,708.8,0.1276,0.1311,0.1786,0.09678,0.2506,0.07623
B,14.34,13.47,92.51,641.2,0.09906,0.07624,0.05724,0.04603,0.2075,0.05448,0.522,0.8121,3.763,48.29,0.007089,0.01428,0.0236,0.01286,0.02266,0.001463,16.77,16.9,110.4,873.2,0.1297,0.1525,0.1632,0.1087,0.3062,0.06072
B,10.44,15.46,66.62,329.6,0.1053,0.07722,0.006643,0.01216,0.1788,0.0645,0.1913,0.9027,1.208,11.86,0.006513,0.008061,0.002817,0.004972,0.01502,0.002821,11.52,19.8,73.47,395.4,0.1341,0.1153,0.02639,0.04464,0.2615,0.08269
B,15,15.51,97.45,684.5,0.08371,0.1096,0.06505,0.0378,0.1881,0.05907,0.2318,0.4966,2.276,19.88,0.004119,0.03207,0.03644,0.01155,0.01391,0.003204,16.41,19.31,114.2,808.2,0.1136,0.3627,0.3402,0.1379,0.2954,0.08362
B,12.62,23.97,81.35,496.4,0.07903,0.07529,0.05438,0.02036,0.1514,0.06019,0.2449,1.066,1.445,18.51,0.005169,0.02294,0.03016,0.008691,0.01365,0.003407,14.2,31.31,90.67,624,0.1227,0.3454,0.3911,0.118,0.2826,0.09585
M,12.83,22.33,85.26,503.2,0.1088,0.1799,0.1695,0.06861,0.2123,0.07254,0.3061,1.069,2.257,25.13,0.006983,0.03858,0.04683,0.01499,0.0168,0.005617,15.2,30.15,105.3,706,0.1777,0.5343,0.6282,0.1977,0.3407,0.1243
M,17.05,19.08,113.4,895,0.1141,0.1572,0.191,0.109,0.2131,0.06325,0.2959,0.679,2.153,31.98,0.005532,0.02008,0.03055,0.01384,0.01177,0.002336,19.59,24.89,133.5,1189,0.1703,0.3934,0.5018,0.2543,0.3109,0.09061
B,11.32,27.08,71.76,395.7,0.06883,0.03813,0.01633,0.003125,0.1869,0.05628,0.121,0.8927,1.059,8.605,0.003653,0.01647,0.01633,0.003125,0.01537,0.002052,12.08,33.75,79.82,452.3,0.09203,0.1432,0.1089,0.02083,0.2849,0.07087
B,11.22,33.81,70.79,386.8,0.0778,0.03574,0.004967,0.006434,0.1845,0.05828,0.2239,1.647,1.489,15.46,0.004359,0.006813,0.003223,0.003419,0.01916,0.002534,12.36,41.78,78.44,470.9,0.09994,0.06885,0.02318,0.03002,0.2911,0.07307
M,20.51,27.81,134.4,1319,0.09159,0.1074,0.1554,0.0834,0.1448,0.05592,0.524,1.189,3.767,70.01,0.00502,0.02062,0.03457,0.01091,0.01298,0.002887,24.47,37.38,162.7,1872,0.1223,0.2761,0.4146,0.1563,0.2437,0.08328
B,9.567,15.91,60.21,279.6,0.08464,0.04087,0.01652,0.01667,0.1551,0.06403,0.2152,0.8301,1.215,12.64,0.01164,0.0104,0.01186,0.009623,0.02383,0.00354,10.51,19.16,65.74,335.9,0.1504,0.09515,0.07161,0.07222,0.2757,0.08178
B,14.03,21.25,89.79,603.4,0.0907,0.06945,0.01462,0.01896,0.1517,0.05835,0.2589,1.503,1.667,22.07,0.007389,0.01383,0.007302,0.01004,0.01263,0.002925,15.33,30.28,98.27,715.5,0.1287,0.1513,0.06231,0.07963,0.2226,0.07617
M,23.21,26.97,153.5,1670,0.09509,0.1682,0.195,0.1237,0.1909,0.06309,1.058,0.9635,7.247,155.8,0.006428,0.02863,0.04497,0.01716,0.0159,0.003053,31.01,34.51,206,2944,0.1481,0.4126,0.582,0.2593,0.3103,0.08677
M,20.48,21.46,132.5,1306,0.08355,0.08348,0.09042,0.06022,0.1467,0.05177,0.6874,1.041,5.144,83.5,0.007959,0.03133,0.04257,0.01671,0.01341,0.003933,24.22,26.17,161.7,1750,0.1228,0.2311,0.3158,0.1445,0.2238,0.07127
B,14.22,27.85,92.55,623.9,0.08223,0.1039,0.1103,0.04408,0.1342,0.06129,0.3354,2.324,2.105,29.96,0.006307,0.02845,0.0385,0.01011,0.01185,0.003589,15.75,40.54,102.5,764,0.1081,0.2426,0.3064,0.08219,0.189,0.07796
M,17.46,39.28,113.4,920.6,0.09812,0.1298,0.1417,0.08811,0.1809,0.05966,0.5366,0.8561,3.002,49,0.00486,0.02785,0.02602,0.01374,0.01226,0.002759,22.51,44.87,141.2,1408,0.1365,0.3735,0.3241,0.2066,0.2853,0.08496
B,13.64,15.6,87.38,575.3,0.09423,0.0663,0.04705,0.03731,0.1717,0.0566,0.3242,0.6612,1.996,27.19,0.00647,0.01248,0.0181,0.01103,0.01898,0.001794,14.85,19.05,94.11,683.4,0.1278,0.1291,0.1533,0.09222,0.253,0.0651
B,12.42,15.04,78.61,476.5,0.07926,0.03393,0.01053,0.01108,0.1546,0.05754,0.1153,0.6745,0.757,9.006,0.003265,0.00493,0.006493,0.003762,0.0172,0.00136,13.2,20.37,83.85,543.4,0.1037,0.07776,0.06243,0.04052,0.2901,0.06783
B,11.3,18.19,73.93,389.4,0.09592,0.1325,0.1548,0.02854,0.2054,0.07669,0.2428,1.642,2.369,16.39,0.006663,0.05914,0.0888,0.01314,0.01995,0.008675,12.58,27.96,87.16,472.9,0.1347,0.4848,0.7436,0.1218,0.3308,0.1297
B,13.75,23.77,88.54,590,0.08043,0.06807,0.04697,0.02344,0.1773,0.05429,0.4347,1.057,2.829,39.93,0.004351,0.02667,0.03371,0.01007,0.02598,0.003087,15.01,26.34,98,706,0.09368,0.1442,0.1359,0.06106,0.2663,0.06321
M,19.4,23.5,129.1,1155,0.1027,0.1558,0.2049,0.08886,0.1978,0.06,0.5243,1.802,4.037,60.41,0.01061,0.03252,0.03915,0.01559,0.02186,0.003949,21.65,30.53,144.9,1417,0.1463,0.2968,0.3458,0.1564,0.292,0.07614
B,10.48,19.86,66.72,337.7,0.107,0.05971,0.04831,0.0307,0.1737,0.0644,0.3719,2.612,2.517,23.22,0.01604,0.01386,0.01865,0.01133,0.03476,0.00356,11.48,29.46,73.68,402.8,0.1515,0.1026,0.1181,0.06736,0.2883,0.07748
B,13.2,17.43,84.13,541.6,0.07215,0.04524,0.04336,0.01105,0.1487,0.05635,0.163,1.601,0.873,13.56,0.006261,0.01569,0.03079,0.005383,0.01962,0.00225,13.94,27.82,88.28,602,0.1101,0.1508,0.2298,0.0497,0.2767,0.07198
B,12.89,14.11,84.95,512.2,0.0876,0.1346,0.1374,0.0398,0.1596,0.06409,0.2025,0.4402,2.393,16.35,0.005501,0.05592,0.08158,0.0137,0.01266,0.007555,14.39,17.7,105,639.1,0.1254,0.5849,0.7727,0.1561,0.2639,0.1178
B,10.65,25.22,68.01,347,0.09657,0.07234,0.02379,0.01615,0.1897,0.06329,0.2497,1.493,1.497,16.64,0.007189,0.01035,0.01081,0.006245,0.02158,0.002619,12.25,35.19,77.98,455.7,0.1499,0.1398,0.1125,0.06136,0.3409,0.08147
B,11.52,14.93,73.87,406.3,0.1013,0.07808,0.04328,0.02929,0.1883,0.06168,0.2562,1.038,1.686,18.62,0.006662,0.01228,0.02105,0.01006,0.01677,0.002784,12.65,21.19,80.88,491.8,0.1389,0.1582,0.1804,0.09608,0.2664,0.07809
M,20.94,23.56,138.9,1364,0.1007,0.1606,0.2712,0.131,0.2205,0.05898,1.004,0.8208,6.372,137.9,0.005283,0.03908,0.09518,0.01864,0.02401,0.005002,25.58,27,165.3,2010,0.1211,0.3172,0.6991,0.2105,0.3126,0.07849
B,11.5,18.45,73.28,407.4,0.09345,0.05991,0.02638,0.02069,0.1834,0.05934,0.3927,0.8429,2.684,26.99,0.00638,0.01065,0.01245,0.009175,0.02292,0.001461,12.97,22.46,83.12,508.9,0.1183,0.1049,0.08105,0.06544,0.274,0.06487
M,19.73,19.82,130.7,1206,0.1062,0.1849,0.2417,0.0974,0.1733,0.06697,0.7661,0.78,4.115,92.81,0.008482,0.05057,0.068,0.01971,0.01467,0.007259,25.28,25.59,159.8,1933,0.171,0.5955,0.8489,0.2507,0.2749,0.1297
M,17.3,17.08,113,928.2,0.1008,0.1041,0.1266,0.08353,0.1813,0.05613,0.3093,0.8568,2.193,33.63,0.004757,0.01503,0.02332,0.01262,0.01394,0.002362,19.85,25.09,130.9,1222,0.1416,0.2405,0.3378,0.1857,0.3138,0.08113
M,19.45,19.33,126.5,1169,0.1035,0.1188,0.1379,0.08591,0.1776,0.05647,0.5959,0.6342,3.797,71,0.004649,0.018,0.02749,0.01267,0.01365,0.00255,25.7,24.57,163.1,1972,0.1497,0.3161,0.4317,0.1999,0.3379,0.0895
M,13.96,17.05,91.43,602.4,0.1096,0.1279,0.09789,0.05246,0.1908,0.0613,0.425,0.8098,2.563,35.74,0.006351,0.02679,0.03119,0.01342,0.02062,0.002695,16.39,22.07,108.1,826,0.1512,0.3262,0.3209,0.1374,0.3068,0.07957
M,19.55,28.77,133.6,1207,0.0926,0.2063,0.1784,0.1144,0.1893,0.06232,0.8426,1.199,7.158,106.4,0.006356,0.04765,0.03863,0.01519,0.01936,0.005252,25.05,36.27,178.6,1926,0.1281,0.5329,0.4251,0.1941,0.2818,0.1005
M,15.32,17.27,103.2,713.3,0.1335,0.2284,0.2448,0.1242,0.2398,0.07596,0.6592,1.059,4.061,59.46,0.01015,0.04588,0.04983,0.02127,0.01884,0.00866,17.73,22.66,119.8,928.8,0.1765,0.4503,0.4429,0.2229,0.3258,0.1191
M,15.66,23.2,110.2,773.5,0.1109,0.3114,0.3176,0.1377,0.2495,0.08104,1.292,2.454,10.12,138.5,0.01236,0.05995,0.08232,0.03024,0.02337,0.006042,19.85,31.64,143.7,1226,0.1504,0.5172,0.6181,0.2462,0.3277,0.1019
M,15.53,33.56,103.7,744.9,0.1063,0.1639,0.1751,0.08399,0.2091,0.0665,0.2419,1.278,1.903,23.02,0.005345,0.02556,0.02889,0.01022,0.009947,0.003359,18.49,49.54,126.3,1035,0.1883,0.5564,0.5703,0.2014,0.3512,0.1204
M,20.31,27.06,132.9,1288,0.1,0.1088,0.1519,0.09333,0.1814,0.05572,0.3977,1.033,2.587,52.34,0.005043,0.01578,0.02117,0.008185,0.01282,0.001892,24.33,39.16,162.3,1844,0.1522,0.2945,0.3788,0.1697,0.3151,0.07999
M,17.35,23.06,111,933.1,0.08662,0.0629,0.02891,0.02837,0.1564,0.05307,0.4007,1.317,2.577,44.41,0.005726,0.01106,0.01246,0.007671,0.01411,0.001578,19.85,31.47,128.2,1218,0.124,0.1486,0.1211,0.08235,0.2452,0.06515
M,17.29,22.13,114.4,947.8,0.08999,0.1273,0.09697,0.07507,0.2108,0.05464,0.8348,1.633,6.146,90.94,0.006717,0.05981,0.04638,0.02149,0.02747,0.005838,20.39,27.24,137.9,1295,0.1134,0.2867,0.2298,0.1528,0.3067,0.07484
M,15.61,19.38,100,758.6,0.0784,0.05616,0.04209,0.02847,0.1547,0.05443,0.2298,0.9988,1.534,22.18,0.002826,0.009105,0.01311,0.005174,0.01013,0.001345,17.91,31.67,115.9,988.6,0.1084,0.1807,0.226,0.08568,0.2683,0.06829
M,17.19,22.07,111.6,928.3,0.09726,0.08995,0.09061,0.06527,0.1867,0.0558,0.4203,0.7383,2.819,45.42,0.004493,0.01206,0.02048,0.009875,0.01144,0.001575,21.58,29.33,140.5,1436,0.1558,0.2567,0.3889,0.1984,0.3216,0.0757
M,20.73,31.12,135.7,1419,0.09469,0.1143,0.1367,0.08646,0.1769,0.05674,1.172,1.617,7.749,199.7,0.004551,0.01478,0.02143,0.00928,0.01367,0.002299,32.49,47.16,214,3432,0.1401,0.2644,0.3442,0.1659,0.2868,0.08218
B,10.6,18.95,69.28,346.4,0.09688,0.1147,0.06387,0.02642,0.1922,0.06491,0.4505,1.197,3.43,27.1,0.00747,0.03581,0.03354,0.01365,0.03504,0.003318,11.88,22.94,78.28,424.8,0.1213,0.2515,0.1916,0.07926,0.294,0.07587
B,13.59,21.84,87.16,561,0.07956,0.08259,0.04072,0.02142,0.1635,0.05859,0.338,1.916,2.591,26.76,0.005436,0.02406,0.03099,0.009919,0.0203,0.003009,14.8,30.04,97.66,661.5,0.1005,0.173,0.1453,0.06189,0.2446,0.07024
B,12.87,16.21,82.38,512.2,0.09425,0.06219,0.039,0.01615,0.201,0.05769,0.2345,1.219,1.546,18.24,0.005518,0.02178,0.02589,0.00633,0.02593,0.002157,13.9,23.64,89.27,597.5,0.1256,0.1808,0.1992,0.0578,0.3604,0.07062
B,10.71,20.39,69.5,344.9,0.1082,0.1289,0.08448,0.02867,0.1668,0.06862,0.3198,1.489,2.23,20.74,0.008902,0.04785,0.07339,0.01745,0.02728,0.00761,11.69,25.21,76.51,410.4,0.1335,0.255,0.2534,0.086,0.2605,0.08701
B,14.29,16.82,90.3,632.6,0.06429,0.02675,0.00725,0.00625,0.1508,0.05376,0.1302,0.7198,0.8439,10.77,0.003492,0.00371,0.004826,0.003608,0.01536,0.001381,14.91,20.65,94.44,684.6,0.08567,0.05036,0.03866,0.03333,0.2458,0.0612
B,11.29,13.04,72.23,388,0.09834,0.07608,0.03265,0.02755,0.1769,0.0627,0.1904,0.5293,1.164,13.17,0.006472,0.01122,0.01282,0.008849,0.01692,0.002817,12.32,16.18,78.27,457.5,0.1358,0.1507,0.1275,0.0875,0.2733,0.08022
M,21.75,20.99,147.3,1491,0.09401,0.1961,0.2195,0.1088,0.1721,0.06194,1.167,1.352,8.867,156.8,0.005687,0.0496,0.06329,0.01561,0.01924,0.004614,28.19,28.18,195.9,2384,0.1272,0.4725,0.5807,0.1841,0.2833,0.08858
B,9.742,15.67,61.5,289.9,0.09037,0.04689,0.01103,0.01407,0.2081,0.06312,0.2684,1.409,1.75,16.39,0.0138,0.01067,0.008347,0.009472,0.01798,0.004261,10.75,20.88,68.09,355.2,0.1467,0.0937,0.04043,0.05159,0.2841,0.08175
M,17.93,24.48,115.2,998.9,0.08855,0.07027,0.05699,0.04744,0.1538,0.0551,0.4212,1.433,2.765,45.81,0.005444,0.01169,0.01622,0.008522,0.01419,0.002751,20.92,34.69,135.1,1320,0.1315,0.1806,0.208,0.1136,0.2504,0.07948
B,11.89,17.36,76.2,435.6,0.1225,0.0721,0.05929,0.07404,0.2015,0.05875,0.6412,2.293,4.021,48.84,0.01418,0.01489,0.01267,0.0191,0.02678,0.003002,12.4,18.99,79.46,472.4,0.1359,0.08368,0.07153,0.08946,0.222,0.06033
B,11.33,14.16,71.79,396.6,0.09379,0.03872,0.001487,0.003333,0.1954,0.05821,0.2375,1.28,1.565,17.09,0.008426,0.008998,0.001487,0.003333,0.02358,0.001627,12.2,18.99,77.37,458,0.1259,0.07348,0.004955,0.01111,0.2758,0.06386
M,18.81,19.98,120.9,1102,0.08923,0.05884,0.0802,0.05843,0.155,0.04996,0.3283,0.828,2.363,36.74,0.007571,0.01114,0.02623,0.01463,0.0193,0.001676,19.96,24.3,129,1236,0.1243,0.116,0.221,0.1294,0.2567,0.05737
B,13.59,17.84,86.24,572.3,0.07948,0.04052,0.01997,0.01238,0.1573,0.0552,0.258,1.166,1.683,22.22,0.003741,0.005274,0.01065,0.005044,0.01344,0.001126,15.5,26.1,98.91,739.1,0.105,0.07622,0.106,0.05185,0.2335,0.06263
B,13.85,15.18,88.99,587.4,0.09516,0.07688,0.04479,0.03711,0.211,0.05853,0.2479,0.9195,1.83,19.41,0.004235,0.01541,0.01457,0.01043,0.01528,0.001593,14.98,21.74,98.37,670,0.1185,0.1724,0.1456,0.09993,0.2955,0.06912
M,19.16,26.6,126.2,1138,0.102,0.1453,0.1921,0.09664,0.1902,0.0622,0.6361,1.001,4.321,69.65,0.007392,0.02449,0.03988,0.01293,0.01435,0.003446,23.72,35.9,159.8,1724,0.1782,0.3841,0.5754,0.1872,0.3258,0.0972
B,11.74,14.02,74.24,427.3,0.07813,0.0434,0.02245,0.02763,0.2101,0.06113,0.5619,1.268,3.717,37.83,0.008034,0.01442,0.01514,0.01846,0.02921,0.002005,13.31,18.26,84.7,533.7,0.1036,0.085,0.06735,0.0829,0.3101,0.06688
M,19.4,18.18,127.2,1145,0.1037,0.1442,0.1626,0.09464,0.1893,0.05892,0.4709,0.9951,2.903,53.16,0.005654,0.02199,0.03059,0.01499,0.01623,0.001965,23.79,28.65,152.4,1628,0.1518,0.3749,0.4316,0.2252,0.359,0.07787
M,16.24,18.77,108.8,805.1,0.1066,0.1802,0.1948,0.09052,0.1876,0.06684,0.2873,0.9173,2.464,28.09,0.004563,0.03481,0.03872,0.01209,0.01388,0.004081,18.55,25.09,126.9,1031,0.1365,0.4706,0.5026,0.1732,0.277,0.1063
B,12.89,15.7,84.08,516.6,0.07818,0.0958,0.1115,0.0339,0.1432,0.05935,0.2913,1.389,2.347,23.29,0.006418,0.03961,0.07927,0.01774,0.01878,0.003696,13.9,19.69,92.12,595.6,0.09926,0.2317,0.3344,0.1017,0.1999,0.07127
B,12.58,18.4,79.83,489,0.08393,0.04216,0.00186,0.002924,0.1697,0.05855,0.2719,1.35,1.721,22.45,0.006383,0.008008,0.00186,0.002924,0.02571,0.002015,13.5,23.08,85.56,564.1,0.1038,0.06624,0.005579,0.008772,0.2505,0.06431
B,11.94,20.76,77.87,441,0.08605,0.1011,0.06574,0.03791,0.1588,0.06766,0.2742,1.39,3.198,21.91,0.006719,0.05156,0.04387,0.01633,0.01872,0.008015,13.24,27.29,92.2,546.1,0.1116,0.2813,0.2365,0.1155,0.2465,0.09981
B,12.89,13.12,81.89,515.9,0.06955,0.03729,0.0226,0.01171,0.1337,0.05581,0.1532,0.469,1.115,12.68,0.004731,0.01345,0.01652,0.005905,0.01619,0.002081,13.62,15.54,87.4,577,0.09616,0.1147,0.1186,0.05366,0.2309,0.06915
B,11.26,19.96,73.72,394.1,0.0802,0.1181,0.09274,0.05588,0.2595,0.06233,0.4866,1.905,2.877,34.68,0.01574,0.08262,0.08099,0.03487,0.03418,0.006517,11.86,22.33,78.27,437.6,0.1028,0.1843,0.1546,0.09314,0.2955,0.07009
B,11.37,18.89,72.17,396,0.08713,0.05008,0.02399,0.02173,0.2013,0.05955,0.2656,1.974,1.954,17.49,0.006538,0.01395,0.01376,0.009924,0.03416,0.002928,12.36,26.14,79.29,459.3,0.1118,0.09708,0.07529,0.06203,0.3267,0.06994
B,14.41,19.73,96.03,651,0.08757,0.1676,0.1362,0.06602,0.1714,0.07192,0.8811,1.77,4.36,77.11,0.007762,0.1064,0.0996,0.02771,0.04077,0.02286,15.77,22.13,101.7,767.3,0.09983,0.2472,0.222,0.1021,0.2272,0.08799
B,14.96,19.1,97.03,687.3,0.08992,0.09823,0.0594,0.04819,0.1879,0.05852,0.2877,0.948,2.171,24.87,0.005332,0.02115,0.01536,0.01187,0.01522,0.002815,16.25,26.19,109.1,809.8,0.1313,0.303,0.1804,0.1489,0.2962,0.08472
B,12.95,16.02,83.14,513.7,0.1005,0.07943,0.06155,0.0337,0.173,0.0647,0.2094,0.7636,1.231,17.67,0.008725,0.02003,0.02335,0.01132,0.02625,0.004726,13.74,19.93,88.81,585.4,0.1483,0.2068,0.2241,0.1056,0.338,0.09584
B,11.85,17.46,75.54,432.7,0.08372,0.05642,0.02688,0.0228,0.1875,0.05715,0.207,1.238,1.234,13.88,0.007595,0.015,0.01412,0.008578,0.01792,0.001784,13.06,25.75,84.35,517.8,0.1369,0.1758,0.1316,0.0914,0.3101,0.07007
B,12.72,13.78,81.78,492.1,0.09667,0.08393,0.01288,0.01924,0.1638,0.061,0.1807,0.6931,1.34,13.38,0.006064,0.0118,0.006564,0.007978,0.01374,0.001392,13.5,17.48,88.54,553.7,0.1298,0.1472,0.05233,0.06343,0.2369,0.06922
B,13.77,13.27,88.06,582.7,0.09198,0.06221,0.01063,0.01917,0.1592,0.05912,0.2191,0.6946,1.479,17.74,0.004348,0.008153,0.004272,0.006829,0.02154,0.001802,14.67,16.93,94.17,661.1,0.117,0.1072,0.03732,0.05802,0.2823,0.06794
B,10.91,12.35,69.14,363.7,0.08518,0.04721,0.01236,0.01369,0.1449,0.06031,0.1753,1.027,1.267,11.09,0.003478,0.01221,0.01072,0.009393,0.02941,0.003428,11.37,14.82,72.42,392.2,0.09312,0.07506,0.02884,0.03194,0.2143,0.06643
M,11.76,18.14,75,431.1,0.09968,0.05914,0.02685,0.03515,0.1619,0.06287,0.645,2.105,4.138,49.11,0.005596,0.01005,0.01272,0.01432,0.01575,0.002758,13.36,23.39,85.1,553.6,0.1137,0.07974,0.0612,0.0716,0.1978,0.06915
B,14.26,18.17,91.22,633.1,0.06576,0.0522,0.02475,0.01374,0.1635,0.05586,0.23,0.669,1.661,20.56,0.003169,0.01377,0.01079,0.005243,0.01103,0.001957,16.22,25.26,105.8,819.7,0.09445,0.2167,0.1565,0.0753,0.2636,0.07676
B,10.51,23.09,66.85,334.2,0.1015,0.06797,0.02495,0.01875,0.1695,0.06556,0.2868,1.143,2.289,20.56,0.01017,0.01443,0.01861,0.0125,0.03464,0.001971,10.93,24.22,70.1,362.7,0.1143,0.08614,0.04158,0.03125,0.2227,0.06777
M,19.53,18.9,129.5,1217,0.115,0.1642,0.2197,0.1062,0.1792,0.06552,1.111,1.161,7.237,133,0.006056,0.03203,0.05638,0.01733,0.01884,0.004787,25.93,26.24,171.1,2053,0.1495,0.4116,0.6121,0.198,0.2968,0.09929
B,12.46,19.89,80.43,471.3,0.08451,0.1014,0.0683,0.03099,0.1781,0.06249,0.3642,1.04,2.579,28.32,0.00653,0.03369,0.04712,0.01403,0.0274,0.004651,13.46,23.07,88.13,551.3,0.105,0.2158,0.19
Download .txt
Showing preview only (488K chars total). Download the full file or copy to clipboard to get everything.
gitextract_zbjy07td/

├── .gitignore
├── CHANGELOG.md
├── INSTRUCTIONS.md
├── LICENSE
├── PAPERS.md
├── README.md
├── ae/
│   └── 2025_USEC_Practical_Keyword_PIR_from_Key-to-Index_Mappings.md
├── data/
│   ├── README.md
│   ├── black_ip/
│   │   ├── blackip.txt
│   │   └── oldip.txt
│   ├── classification/
│   │   ├── breast_cancer/
│   │   │   └── breastcancer.csv
│   │   ├── iris/
│   │   │   └── iris.csv
│   │   ├── pendigits/
│   │   │   └── pendigits.csv
│   │   └── weather/
│   │       └── weather.csv
│   └── regression/
│       ├── abalone/
│       │   ├── abalone-test.csv
│       │   └── abalone-train.csv
│       ├── autompg/
│       │   └── autoMpg.csv
│       ├── boston_housing/
│       │   └── boston_housing.csv
│       ├── cpu/
│       │   └── cpu.csv
│       └── kin8nm/
│           └── kin8nm.csv
├── mpc4j-common-circuit/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── circuit/
│       │                           ├── CircuitConfig.java
│       │                           ├── MpcVector.java
│       │                           ├── operator/
│       │                           │   ├── DyadicAcOperator.java
│       │                           │   ├── DyadicBcOperator.java
│       │                           │   ├── UnaryAcOperator.java
│       │                           │   ├── UnaryBcOperator.java
│       │                           │   └── Z2IntegerOperator.java
│       │                           ├── prefix/
│       │                           │   ├── AbstractPrefixTree.java
│       │                           │   ├── BrentKungTree.java
│       │                           │   ├── KoggeStoneTree.java
│       │                           │   ├── PrefixNode.java
│       │                           │   ├── PrefixOp.java
│       │                           │   ├── PrefixTree.java
│       │                           │   ├── PrefixTreeFactory.java
│       │                           │   └── SklanskyTree.java
│       │                           ├── z2/
│       │                           │   ├── AbstractZ2Circuit.java
│       │                           │   ├── MpcZ2Vector.java
│       │                           │   ├── MpcZ2cParty.java
│       │                           │   ├── PlainZ2Vector.java
│       │                           │   ├── PlainZ2cParty.java
│       │                           │   ├── Z2CircuitConfig.java
│       │                           │   ├── Z2IntegerCircuit.java
│       │                           │   ├── adder/
│       │                           │   │   ├── AbstractAdder.java
│       │                           │   │   ├── Adder.java
│       │                           │   │   ├── AdderFactory.java
│       │                           │   │   ├── ParallelPrefixAdder.java
│       │                           │   │   └── RippleCarryAdder.java
│       │                           │   ├── comparator/
│       │                           │   │   ├── Comparator.java
│       │                           │   │   ├── ComparatorFactory.java
│       │                           │   │   ├── SerialComparator.java
│       │                           │   │   └── TreeComparator.java
│       │                           │   ├── multiplier/
│       │                           │   │   ├── AbstractMultiplier.java
│       │                           │   │   ├── Multiplier.java
│       │                           │   │   ├── MultiplierFactory.java
│       │                           │   │   └── ShiftAddMultiplier.java
│       │                           │   ├── psorter/
│       │                           │   │   ├── AbstractPermutationSorter.java
│       │                           │   │   ├── Psorter.java
│       │                           │   │   ├── PsorterFactory.java
│       │                           │   │   └── bitonic/
│       │                           │   │       └── PermutableBitonicSorter.java
│       │                           │   ├── sorter/
│       │                           │   │   ├── AbstractSorter.java
│       │                           │   │   ├── AbstractSortingNetwork.java
│       │                           │   │   ├── BitonicSorter.java
│       │                           │   │   ├── RandomizedShellSorter.java
│       │                           │   │   ├── Sorter.java
│       │                           │   │   └── SorterFactory.java
│       │                           │   └── utils/
│       │                           │       └── Z2VectorUtils.java
│       │                           ├── zl/
│       │                           │   ├── MpcZlVector.java
│       │                           │   ├── MpcZlcParty.java
│       │                           │   ├── PlainZlVector.java
│       │                           │   └── PlainZlcParty.java
│       │                           ├── zl64/
│       │                           │   ├── MpcZl64Vector.java
│       │                           │   ├── MpcZl64cParty.java
│       │                           │   ├── PlainZl64Vector.java
│       │                           │   └── PlainZl64cParty.java
│       │                           └── zlong/
│       │                               ├── MpcLongParty.java
│       │                               ├── MpcLongVector.java
│       │                               └── PlainLongVector.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── circuit/
│           │                       ├── z2/
│           │                       │   ├── BatchPlainZ2PartyTest.java
│           │                       │   ├── SinglePlainZ2PartyTest.java
│           │                       │   ├── Z2AdderTest.java
│           │                       │   ├── Z2CircuitTestUtils.java
│           │                       │   ├── Z2ComparatorTest.java
│           │                       │   ├── Z2IntegerCircuitParty.java
│           │                       │   ├── Z2IntegerCircuitTest.java
│           │                       │   ├── Z2MultiplierTest.java
│           │                       │   ├── Z2PsorterTest.java
│           │                       │   └── Z2SorterTest.java
│           │                       └── zl/
│           │                           ├── BatchPlainZlPartyTest.java
│           │                           └── SinglePlainZlPartyTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-data/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── data/
│       │                           ├── DataFrameUtils.java
│       │                           ├── DatasetManager.java
│       │                           ├── classification/
│       │                           │   ├── BreastCancer.java
│       │                           │   ├── Iris.java
│       │                           │   ├── PenDigits.java
│       │                           │   └── Weather.java
│       │                           └── regression/
│       │                               ├── Abalone.java
│       │                               ├── AutoMpg.java
│       │                               ├── BostonHousing.java
│       │                               ├── Cpu.java
│       │                               └── Kin8nm.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── data/
│           │                       └── DatasetTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-rpc/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── rpc/
│       │                           ├── MpcAbortException.java
│       │                           ├── MpcAbortPreconditions.java
│       │                           ├── Party.java
│       │                           ├── PartyState.java
│       │                           ├── PtoState.java
│       │                           ├── Rpc.java
│       │                           ├── RpcManager.java
│       │                           ├── RpcPropertiesUtils.java
│       │                           ├── desc/
│       │                           │   ├── PtoDesc.java
│       │                           │   ├── PtoDescManager.java
│       │                           │   └── SecurityModel.java
│       │                           ├── impl/
│       │                           │   ├── file/
│       │                           │   │   ├── FileParty.java
│       │                           │   │   ├── FilePtoDesc.java
│       │                           │   │   ├── FileRpc.java
│       │                           │   │   └── FileRpcManager.java
│       │                           │   ├── memory/
│       │                           │   │   ├── MemoryParty.java
│       │                           │   │   ├── MemoryPtoDesc.java
│       │                           │   │   ├── MemoryRpc.java
│       │                           │   │   └── MemoryRpcManager.java
│       │                           │   └── netty/
│       │                           │       ├── NettyParty.java
│       │                           │       ├── protobuf/
│       │                           │       │   ├── RobustNettyRpc.proto
│       │                           │       │   ├── RobustNettyRpcProtobuf.java
│       │                           │       │   ├── SimpleNettyRpc.proto
│       │                           │       │   ├── SimpleNettyRpcProtobuf.java
│       │                           │       │   └── readme.md
│       │                           │       ├── robust/
│       │                           │       │   ├── RobustChunkAssembler.java
│       │                           │       │   ├── RobustDataReceiveHandler.java
│       │                           │       │   ├── RobustDataReceiveThread.java
│       │                           │       │   ├── RobustDataSendHandler.java
│       │                           │       │   ├── RobustDataSendManager.java
│       │                           │       │   ├── RobustNettyPtoDesc.java
│       │                           │       │   ├── RobustNettyRpc.java
│       │                           │       │   └── RobustNettyRpcManager.java
│       │                           │       └── simple/
│       │                           │           ├── SimpleDataReceiveHandler.java
│       │                           │           ├── SimpleDataReceiveThread.java
│       │                           │           ├── SimpleDataSendHandler.java
│       │                           │           ├── SimpleDataSendManager.java
│       │                           │           ├── SimpleNettyPtoDesc.java
│       │                           │           ├── SimpleNettyRpc.java
│       │                           │           └── SimpleNettyRpcManager.java
│       │                           ├── main/
│       │                           │   ├── AbstractMainTwoPartyPto.java
│       │                           │   ├── MainParty1Thread.java
│       │                           │   ├── MainParty2Thread.java
│       │                           │   ├── MainPtoConfigUtils.java
│       │                           │   └── MainTwoPartyPto.java
│       │                           ├── pto/
│       │                           │   ├── AbstractMultiPartyPto.java
│       │                           │   ├── AbstractMultiPartyPtoConfig.java
│       │                           │   ├── AbstractThreePartyMemoryRpcPto.java
│       │                           │   ├── AbstractThreePartyPto.java
│       │                           │   ├── AbstractTwoPartyAidPto.java
│       │                           │   ├── AbstractTwoPartyMemoryRpcPto.java
│       │                           │   ├── AbstractTwoPartyPto.java
│       │                           │   ├── MultiPartyPto.java
│       │                           │   ├── MultiPartyPtoConfig.java
│       │                           │   ├── PtoFactory.java
│       │                           │   ├── ThreePartyPto.java
│       │                           │   ├── TwoPartyAidPto.java
│       │                           │   └── TwoPartyPto.java
│       │                           └── utils/
│       │                               ├── DataPacket.java
│       │                               ├── DataPacketBuffer.java
│       │                               ├── DataPacketHeader.java
│       │                               └── PayloadType.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── rpc/
│           │                       ├── RpcTestUtils.java
│           │                       ├── impl/
│           │                       │   ├── RpcConnectTest.java
│           │                       │   ├── RpcImplTestPtoDesc.java
│           │                       │   ├── RpcImplTestUtils.java
│           │                       │   ├── RpcSendRecvTest.java
│           │                       │   ├── RpcSendRecvThread.java
│           │                       │   └── netty/
│           │                       │       ├── robust/
│           │                       │       │   ├── RobustChunkAssemblerTest.java
│           │                       │       │   └── RobustNettyRpcTest.java
│           │                       │       └── simple/
│           │                       │           └── SimpleNettyRpcTest.java
│           │                       └── utils/
│           │                           ├── DataPacketBufferParty1Thread.java
│           │                           ├── DataPacketBufferParty2Thread.java
│           │                           ├── DataPacketBufferTest.java
│           │                           ├── DataPacketTest.java
│           │                           └── DataPacketTestPtoDesc.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-sampler/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── common/
│       │                       └── sampler/
│       │                           ├── Sampler.java
│       │                           ├── SecureNoiseMath.java
│       │                           ├── binary/
│       │                           │   ├── BinarySampler.java
│       │                           │   ├── bernoulli/
│       │                           │   │   ├── ApacheBernoulliSampler.java
│       │                           │   │   ├── BernoulliSampler.java
│       │                           │   │   ├── ExpBernoulliSampler.java
│       │                           │   │   └── SecureBernoulliSampler.java
│       │                           │   └── others/
│       │                           │       └── ExpfBernoulliSampler.java
│       │                           ├── integral/
│       │                           │   ├── IntegralSampler.java
│       │                           │   ├── gaussian/
│       │                           │   │   ├── AbstractDiscGaussSampler.java
│       │                           │   │   ├── AbstractTauDiscGaussSampler.java
│       │                           │   │   ├── AliasTauDiscGaussSampler.java
│       │                           │   │   ├── Cks20DiscGaussSampler.java
│       │                           │   │   ├── Cks20TauDiscGaussSampler.java
│       │                           │   │   ├── ConvolutionDiscGaussSampler.java
│       │                           │   │   ├── DiscGaussSampler.java
│       │                           │   │   ├── DiscGaussSamplerFactory.java
│       │                           │   │   ├── Sigma2LogTableDiscGaussSampler.java
│       │                           │   │   ├── Sigma2LogTableTauDiscGaussSampler.java
│       │                           │   │   ├── TauDiscGaussSampler.java
│       │                           │   │   ├── UniLogTableTauDiscGaussSampler.java
│       │                           │   │   ├── UniOnlineTauDiscGaussSampler.java
│       │                           │   │   └── UniTableTauDiscGaussSampler.java
│       │                           │   ├── geometric/
│       │                           │   │   ├── ApacheGeometricSampler.java
│       │                           │   │   ├── DiscreteGeometricSampler.java
│       │                           │   │   ├── GeometricSampler.java
│       │                           │   │   └── JdkGeometricSampler.java
│       │                           │   ├── nb/
│       │                           │   │   ├── ApacheNbSampler.java
│       │                           │   │   └── NbSampler.java
│       │                           │   ├── others/
│       │                           │   │   └── Sigma2DiscGaussSampler.java
│       │                           │   └── poisson/
│       │                           │       ├── ApachePoissonSampler.java
│       │                           │       └── PoissonSampler.java
│       │                           └── real/
│       │                               ├── RealSampler.java
│       │                               ├── gamma/
│       │                               │   ├── ApacheGammaSampler.java
│       │                               │   └── GammaSampler.java
│       │                               ├── gaussian/
│       │                               │   ├── ApacheGaussianSampler.java
│       │                               │   ├── GaussianSampler.java
│       │                               │   └── GoogleGaussianSampler.java
│       │                               └── laplace/
│       │                                   ├── ApacheLaplaceSampler.java
│       │                                   ├── GoogleLaplaceSampler.java
│       │                                   └── LaplaceSampler.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── sampler/
│           │                       ├── binary/
│           │                       │   ├── BernoulliEfficiencyTest.java
│           │                       │   └── BernoulliTest.java
│           │                       ├── integral/
│           │                       │   ├── IntegerEfficiencyTest.java
│           │                       │   ├── gaussian/
│           │                       │   │   ├── ConvolutionDiscGaussSamplerTest.java
│           │                       │   │   ├── DiscGaussSamplerEfficiencyTest.java
│           │                       │   │   ├── DiscGaussSamplerTest.java
│           │                       │   │   ├── DiscGaussSamplerTestUtils.java
│           │                       │   │   └── TauDiscGaussSamplerTest.java
│           │                       │   ├── geometric/
│           │                       │   │   └── GeometricTest.java
│           │                       │   ├── nb/
│           │                       │   │   └── NbSamplerTest.java
│           │                       │   └── poisson/
│           │                       │       └── PoissonSamplerTest.java
│           │                       └── real/
│           │                           ├── RealEfficiencyTest.java
│           │                           ├── gamma/
│           │                           │   └── GammaRealTest.java
│           │                           ├── gaussian/
│           │                           │   └── GaussianRealTest.java
│           │                           └── laplace/
│           │                               └── LaplaceRealTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-structure/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   └── edu/
│       │   │       └── alibaba/
│       │   │           └── mpc4j/
│       │   │               └── common/
│       │   │                   └── structure/
│       │   │                       ├── StructureUtils.java
│       │   │                       ├── database/
│       │   │                       │   ├── Database.java
│       │   │                       │   ├── DatabaseFactory.java
│       │   │                       │   ├── NaiveDatabase.java
│       │   │                       │   ├── Zl32Database.java
│       │   │                       │   ├── Zl64Database.java
│       │   │                       │   └── ZlDatabase.java
│       │   │                       ├── fastfilter/
│       │   │                       │   ├── AbstractFastCuckooFilter.java
│       │   │                       │   ├── AbstractFastCuckooFilterPosition.java
│       │   │                       │   ├── AbstractFastVacuumFilter.java
│       │   │                       │   ├── AbstractFastVacuumFilterPosition.java
│       │   │                       │   ├── FastCuckooFilter.java
│       │   │                       │   ├── FastCuckooFilterFactory.java
│       │   │                       │   ├── FastCuckooFilterPosition.java
│       │   │                       │   ├── MobileFastCuckooFilter.java
│       │   │                       │   ├── MobileFastCuckooFilterPosition.java
│       │   │                       │   ├── MobileFastVacuumFilter.java
│       │   │                       │   ├── MobileFastVacuumFilterPosition.java
│       │   │                       │   ├── NaiveFastCuckooFilter.java
│       │   │                       │   ├── NaiveFastCuckooFilterPosition.java
│       │   │                       │   ├── NaiveFastVacuumFilter.java
│       │   │                       │   ├── NaiveFastVacuumFilterPosition.java
│       │   │                       │   └── SingleTable.java
│       │   │                       ├── filter/
│       │   │                       │   ├── AbstractBloomFilter.java
│       │   │                       │   ├── AbstractCuckooFilter.java
│       │   │                       │   ├── AbstractCuckooFilterPosition.java
│       │   │                       │   ├── AbstractVacuumFilter.java
│       │   │                       │   ├── AbstractVacuumFilterPosition.java
│       │   │                       │   ├── BloomFilter.java
│       │   │                       │   ├── BloomFilterFactory.java
│       │   │                       │   ├── CuckooFilter.java
│       │   │                       │   ├── CuckooFilterFactory.java
│       │   │                       │   ├── CuckooFilterPosition.java
│       │   │                       │   ├── DistinctBloomFilter.java
│       │   │                       │   ├── Filter.java
│       │   │                       │   ├── FilterFactory.java
│       │   │                       │   ├── MobileCuckooFilter.java
│       │   │                       │   ├── MobileCuckooFilterPosition.java
│       │   │                       │   ├── MobileVacuumFilter.java
│       │   │                       │   ├── MobileVacuumFilterPosition.java
│       │   │                       │   ├── NaiveCuckooFilter.java
│       │   │                       │   ├── NaiveCuckooFilterPosition.java
│       │   │                       │   ├── NaiveRandomBloomFilter.java
│       │   │                       │   ├── NaiveVacuumFilter.java
│       │   │                       │   ├── NaiveVacuumFilterPosition.java
│       │   │                       │   ├── SetFilter.java
│       │   │                       │   └── SparseRandomBloomFilter.java
│       │   │                       ├── fusefilter/
│       │   │                       │   ├── AbstractArity3ByteFuseInstance.java
│       │   │                       │   ├── AbstractArity3ByteFusePosition.java
│       │   │                       │   ├── Arity3ByteFuseFilter.java
│       │   │                       │   ├── Arity3ByteFuseInstance.java
│       │   │                       │   ├── Arity3ByteFusePosition.java
│       │   │                       │   ├── ByteFuseFilter.java
│       │   │                       │   ├── ByteFuseInstance.java
│       │   │                       │   ├── ByteFusePosition.java
│       │   │                       │   └── ByteFuseUtils.java
│       │   │                       ├── lpn/
│       │   │                       │   ├── LpnCoder.java
│       │   │                       │   ├── LpnParams.java
│       │   │                       │   ├── LpnParamsChecker.java
│       │   │                       │   ├── dual/
│       │   │                       │   │   ├── DualLpnCoder.java
│       │   │                       │   │   ├── excoder/
│       │   │                       │   │   │   ├── EaCoder.java
│       │   │                       │   │   │   ├── ExCoder.java
│       │   │                       │   │   │   ├── ExCoderFactory.java
│       │   │                       │   │   │   ├── NonSysEcCoder.java
│       │   │                       │   │   │   └── SystemEcCoder.java
│       │   │                       │   │   ├── expander/
│       │   │                       │   │   │   ├── AbstractExpanderCoder.java
│       │   │                       │   │   │   ├── NonSysExpanderCoder.java
│       │   │                       │   │   │   └── SystemExpanderCoder.java
│       │   │                       │   │   └── silver/
│       │   │                       │   │       ├── AbstractSilverCodeCreator.java
│       │   │                       │   │       ├── FullSilverCodeCreator.java
│       │   │                       │   │       ├── OnlineSilverCodeCreator.java
│       │   │                       │   │       ├── SilverCodeCreator.java
│       │   │                       │   │       ├── SilverCodeCreatorFactory.java
│       │   │                       │   │       ├── SilverCodeCreatorUtils.java
│       │   │                       │   │       ├── SilverCodeLpnParamsFinder.java
│       │   │                       │   │       └── SilverCoder.java
│       │   │                       │   └── primal/
│       │   │                       │       ├── LocalLinearCoder.java
│       │   │                       │       └── PrimalLpnCoder.java
│       │   │                       ├── matrix/
│       │   │                       │   ├── ByteMatrix.java
│       │   │                       │   ├── IntMatrix.java
│       │   │                       │   ├── LongRingMatrix.java
│       │   │                       │   ├── Matrix.java
│       │   │                       │   ├── Zl64Matrix.java
│       │   │                       │   └── zp/
│       │   │                       │       ├── DenseZpMatrix.java
│       │   │                       │       └── ZpMatrix.java
│       │   │                       ├── okve/
│       │   │                       │   ├── OkveHashUtils.java
│       │   │                       │   ├── cuckootable/
│       │   │                       │   │   ├── AbstractCuckooTable.java
│       │   │                       │   │   ├── CuckooTable.java
│       │   │                       │   │   ├── CuckooTableSingletonTcFinder.java
│       │   │                       │   │   ├── CuckooTableTcFinder.java
│       │   │                       │   │   ├── H2CuckooTable.java
│       │   │                       │   │   ├── H2CuckooTableDfsDealer.java
│       │   │                       │   │   ├── H2CuckooTableTcFinder.java
│       │   │                       │   │   ├── H3CuckooTable.java
│       │   │                       │   │   └── H4CuckooTable.java
│       │   │                       │   ├── dokvs/
│       │   │                       │   │   ├── DistinctGbfUtils.java
│       │   │                       │   │   ├── H2BlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H2ClusterBlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H2GctDokvsUtils.java
│       │   │                       │   │   ├── H2NaiveGctDokvsUtils.java
│       │   │                       │   │   ├── H3BlazeGctDovsUtils.java
│       │   │                       │   │   ├── H3ClusterBlazeGctDokvsUtils.java
│       │   │                       │   │   ├── H3GctDokvsUtils.java
│       │   │                       │   │   ├── H3NaiveGctDokvsUtils.java
│       │   │                       │   │   ├── ecc/
│       │   │                       │   │   │   ├── AbstractEccDokvs.java
│       │   │                       │   │   │   ├── AbstractGbfEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH2ClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH2GctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH3ClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── AbstractH3GctEccDokvs.java
│       │   │                       │   │   │   ├── DistinctGbfEccDokvs.java
│       │   │                       │   │   │   ├── EccDokvs.java
│       │   │                       │   │   │   ├── EccDokvsFactory.java
│       │   │                       │   │   │   ├── H2BlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H2NaiveClusterBlazeGctEccOkvs.java
│       │   │                       │   │   │   ├── H2SingletonGctEccDokvs.java
│       │   │                       │   │   │   ├── H2SparseClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H2TwoCoreGctEccDokvs.java
│       │   │                       │   │   │   ├── H3BlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H3NaiveClusterBlazeGctEccDokvs.java
│       │   │                       │   │   │   ├── H3SingletonGctEccDokvs.java
│       │   │                       │   │   │   ├── H3SparseClusterBlazeGctDokvs.java
│       │   │                       │   │   │   └── SparseEccDokvs.java
│       │   │                       │   │   ├── gf2e/
│       │   │                       │   │   │   ├── AbstractGbfGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH2ClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH2GctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH3ClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── AbstractH3GctGf2eDokvs.java
│       │   │                       │   │   │   ├── BinaryGf2eDokvs.java
│       │   │                       │   │   │   ├── DistinctGbfGf2eDokvs.java
│       │   │                       │   │   │   ├── Gf2eDokvs.java
│       │   │                       │   │   │   ├── Gf2eDokvsFactory.java
│       │   │                       │   │   │   ├── H2BlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2NaiveClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2SingletonGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2SparseClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H2TwoCoreGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3BlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3NaiveClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3SingletonGctGf2eDokvs.java
│       │   │                       │   │   │   ├── H3SparseClusterBlazeGctGf2eDokvs.java
│       │   │                       │   │   │   ├── MegaBinGf2eDokvs.java
│       │   │                       │   │   │   └── SparseGf2eDokvs.java
│       │   │                       │   │   ├── gf2k/
│       │   │                       │   │   │   ├── AbstractGf2kDokvs.java
│       │   │                       │   │   │   ├── AbstractH3FieldGctGf2kDokvs.java
│       │   │                       │   │   │   ├── BinaryGf2kDokvs.java
│       │   │                       │   │   │   ├── FieldGf2kDokvs.java
│       │   │                       │   │   │   ├── Gf2kDokvs.java
│       │   │                       │   │   │   ├── Gf2kDokvsFactory.java
│       │   │                       │   │   │   ├── H3ClusterFieldBlazeGctGf2kDokvs.java
│       │   │                       │   │   │   ├── H3FieldBlazeGctGf2kDokvs.java
│       │   │                       │   │   │   └── MegaBinGf2kDokvs.java
│       │   │                       │   │   └── zp/
│       │   │                       │   │       ├── AbstractGbfZpDokvs.java
│       │   │                       │   │       ├── AbstractH2ClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── AbstractH2GctZpDokvs.java
│       │   │                       │   │       ├── AbstractH3ClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── AbstractH3GctZpDokvs.java
│       │   │                       │   │       ├── AbstractZpDokvs.java
│       │   │                       │   │       ├── DistinctGbfZpDokvs.java
│       │   │                       │   │       ├── H2BlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2NaiveClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2SingletonGctZpDokvs.java
│       │   │                       │   │       ├── H2SparseClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H2TwoCoreGctZpDokvs.java
│       │   │                       │   │       ├── H3BlazeGctZpDokvs.java
│       │   │                       │   │       ├── H3NaiveClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── H3SingletonGctZpDokvs.java
│       │   │                       │   │       ├── H3SparseClusterBlazeGctZpDokvs.java
│       │   │                       │   │       ├── SparseZpDokvs.java
│       │   │                       │   │       ├── ZpDokvs.java
│       │   │                       │   │       └── ZpDokvsFactory.java
│       │   │                       │   └── tool/
│       │   │                       │       ├── BinaryBandLinearSolver.java
│       │   │                       │       ├── BinaryLinearSolver.java
│       │   │                       │       ├── BinaryMaxLisFinder.java
│       │   │                       │       ├── EccLinearSolver.java
│       │   │                       │       ├── Gf2kLinearSolver.java
│       │   │                       │       ├── RowEchelonFormInfo.java
│       │   │                       │       ├── Zp64BandLinearSolver.java
│       │   │                       │       ├── ZpBandLinearSolver.java
│       │   │                       │       ├── ZpLinearSolver.java
│       │   │                       │       └── ZpMaxLisFinder.java
│       │   │                       ├── pgm/
│       │   │                       │   ├── IntGrowableArray.java
│       │   │                       │   ├── LongApproxPgmIndex.java
│       │   │                       │   ├── LongIntrinsics.java
│       │   │                       │   ├── LongPgmIndex.java
│       │   │                       │   ├── PgmIndexUtil.java
│       │   │                       │   └── PlaModel.java
│       │   │                       ├── rcfilter/
│       │   │                       │   ├── AbstractRandomVacuumFilter.java
│       │   │                       │   ├── MobileRandomVacuumFilter.java
│       │   │                       │   ├── MobileRandomVacuumFilterPosition.java
│       │   │                       │   ├── NaiveRandomVacuumFilter.java
│       │   │                       │   ├── NaiveRandomVacuumFilterPosition.java
│       │   │                       │   ├── RandomCuckooFilter.java
│       │   │                       │   ├── RandomCuckooFilterFactory.java
│       │   │                       │   ├── RandomCuckooFilterHashUtils.java
│       │   │                       │   └── RandomCuckooFilterPosition.java
│       │   │                       └── vector/
│       │   │                           ├── BigIntegerVector.java
│       │   │                           ├── ByteVector.java
│       │   │                           ├── FieldVector.java
│       │   │                           ├── IntVector.java
│       │   │                           ├── LongVector.java
│       │   │                           ├── RingVector.java
│       │   │                           ├── Vector.java
│       │   │                           ├── Zl64Vector.java
│       │   │                           ├── ZlVector.java
│       │   │                           └── Zp64Vector.java
│       │   └── resources/
│       │       └── silver/
│       │           └── z2/
│       │               ├── SILVER_11_14.txt
│       │               ├── SILVER_11_15.txt
│       │               ├── SILVER_11_16.txt
│       │               ├── SILVER_11_17.txt
│       │               ├── SILVER_11_18.txt
│       │               ├── SILVER_11_19.txt
│       │               ├── SILVER_11_20.txt
│       │               ├── SILVER_11_21.txt
│       │               ├── SILVER_11_22.txt
│       │               ├── SILVER_11_23.txt
│       │               ├── SILVER_11_24.txt
│       │               ├── SILVER_5_14.txt
│       │               ├── SILVER_5_15.txt
│       │               ├── SILVER_5_16.txt
│       │               ├── SILVER_5_17.txt
│       │               ├── SILVER_5_18.txt
│       │               ├── SILVER_5_19.txt
│       │               ├── SILVER_5_20.txt
│       │               ├── SILVER_5_21.txt
│       │               ├── SILVER_5_22.txt
│       │               ├── SILVER_5_23.txt
│       │               └── SILVER_5_24.txt
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── structure/
│           │                       ├── database/
│           │                       │   ├── DatabaseTest.java
│           │                       │   └── NaiveDatabaseTest.java
│           │                       ├── fastfilter/
│           │                       │   ├── FastCuckooFilterTest.java
│           │                       │   └── FastFilterEfficiencyTest.java
│           │                       ├── filter/
│           │                       │   ├── BloomFilterTest.java
│           │                       │   ├── CuckooFilterTest.java
│           │                       │   ├── FilterEfficiencyTest.java
│           │                       │   └── FilterTest.java
│           │                       ├── fusefilter/
│           │                       │   ├── ByteFuseFilterParamsTest.java
│           │                       │   └── ByteFuseFilterTest.java
│           │                       ├── lpn/
│           │                       │   ├── LpnCoderTestUtils.java
│           │                       │   ├── LpnParamsCheckerTest.java
│           │                       │   ├── dual/
│           │                       │   │   ├── excoder/
│           │                       │   │   │   └── ExCoderTest.java
│           │                       │   │   ├── expander/
│           │                       │   │   │   ├── NonSysExpanderCoderTest.java
│           │                       │   │   │   └── SystemExpanderCoderTest.java
│           │                       │   │   └── silver/
│           │                       │   │       ├── SilverCodeCreatorTest.java
│           │                       │   │       └── SilverCoderTest.java
│           │                       │   └── primal/
│           │                       │       └── LocalLinearCoderTest.java
│           │                       ├── matrix/
│           │                       │   ├── IntMatrixTest.java
│           │                       │   └── zp/
│           │                       │       └── DenseZpMatrixTest.java
│           │                       ├── okve/
│           │                       │   ├── cuckootable/
│           │                       │   │   ├── CuckooTableTest.java
│           │                       │   │   ├── H2DfsDealerTest.java
│           │                       │   │   ├── H2TcFinderTest.java
│           │                       │   │   ├── H3TcFinderTest.java
│           │                       │   │   └── H4TcFinderTest.java
│           │                       │   ├── dokvs/
│           │                       │   │   ├── ecc/
│           │                       │   │   │   ├── EccDokvsEfficiencyTest.java
│           │                       │   │   │   ├── EccDokvsTest.java
│           │                       │   │   │   └── SparseEccDokvsTest.java
│           │                       │   │   ├── gf2e/
│           │                       │   │   │   ├── BinaryGf2eDokvsTest.java
│           │                       │   │   │   ├── Gf2eDokvsEfficiencyTest.java
│           │                       │   │   │   ├── Gf2eDokvsTest.java
│           │                       │   │   │   └── SparseGf2eDokvsTest.java
│           │                       │   │   ├── gf2k/
│           │                       │   │   │   ├── Gf2kDokvsEfficiencyTest.java
│           │                       │   │   │   └── Gf2kDokvsTest.java
│           │                       │   │   └── zp/
│           │                       │   │       ├── SparseZpDokvsTest.java
│           │                       │   │       ├── ZpDokvsEfficiencyTest.java
│           │                       │   │       └── ZpDokvsTest.java
│           │                       │   └── tool/
│           │                       │       ├── BinaryBandLinearSolverConstantTest.java
│           │                       │       ├── BinaryBandLinearSolverRandomTest.java
│           │                       │       ├── BinaryLinearSolverConstantTest.java
│           │                       │       ├── BinaryLinearSolverRandomTest.java
│           │                       │       ├── BinaryMaxLisFinderTest.java
│           │                       │       ├── EccLinearSolverRandomTest.java
│           │                       │       ├── Gf2kLinearSolverConstantTest.java
│           │                       │       ├── Zp64BandLinearSolverConstantTest.java
│           │                       │       ├── Zp64BandLinearSolverRandomTest.java
│           │                       │       ├── ZpBandLinearSolverConstantTest.java
│           │                       │       ├── ZpBandLinearSolverRandomTest.java
│           │                       │       ├── ZpLinearSolverConstantTest.java
│           │                       │       ├── ZpLinearSolverRandomTest.java
│           │                       │       └── ZpMaxLisFinderTest.java
│           │                       ├── pgm/
│           │                       │   ├── LongApproxPgmIndexParamsTest.java
│           │                       │   ├── LongApproxPgmIndexTest.java
│           │                       │   ├── LongIntrinsicsTest.java
│           │                       │   └── LongPgmIndexTest.java
│           │                       ├── rcfilter/
│           │                       │   ├── RandomCuckooFilterTest.java
│           │                       │   └── RandomFilterEfficiencyTest.java
│           │                       └── vector/
│           │                           ├── ByteVectorTest.java
│           │                           ├── IntVectorTest.java
│           │                           ├── LongVectorTest.java
│           │                           ├── Zl64VectorTest.java
│           │                           ├── ZlVectorTest.java
│           │                           └── Zp64VectorTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-common-tool/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   ├── java/
│       │   │   ├── cc/
│       │   │   │   └── redberry/
│       │   │   │       └── rings/
│       │   │   │           └── JdkIntegersZp.java
│       │   │   └── edu/
│       │   │       └── alibaba/
│       │   │           └── mpc4j/
│       │   │               └── common/
│       │   │                   └── tool/
│       │   │                       ├── CommonConstants.java
│       │   │                       ├── Config.java
│       │   │                       ├── EnvType.java
│       │   │                       ├── MathPreconditions.java
│       │   │                       ├── bitmatrix/
│       │   │                       │   ├── dense/
│       │   │                       │   │   ├── ByteDenseBitMatrix.java
│       │   │                       │   │   ├── DenseBitMatrix.java
│       │   │                       │   │   ├── DenseBitMatrixFactory.java
│       │   │                       │   │   └── LongDenseBitMatrix.java
│       │   │                       │   ├── sparse/
│       │   │                       │   │   ├── ExtremeSparseBitMatrix.java
│       │   │                       │   │   ├── LowerTriSquareSparseBitMatrix.java
│       │   │                       │   │   ├── NaiveSparseBitMatrix.java
│       │   │                       │   │   ├── SparseBitMatrix.java
│       │   │                       │   │   ├── SparseBitVector.java
│       │   │                       │   │   ├── TriSquareSparseBitMatrix.java
│       │   │                       │   │   └── UpperTriSquareSparseBitMatrix.java
│       │   │                       │   └── trans/
│       │   │                       │       ├── AbstractSplitColTransBitMatrix.java
│       │   │                       │       ├── AbstractSplitRowTransBitMatrix.java
│       │   │                       │       ├── AbstractTransBitMatrix.java
│       │   │                       │       ├── EklundhTransBitMatrix.java
│       │   │                       │       ├── JdkSimdTransBitMatrix.java
│       │   │                       │       ├── JdkSplitColTransBitMatrix.java
│       │   │                       │       ├── JdkSplitRowTransBitMatrix.java
│       │   │                       │       ├── JdkTransBitMatrix.java
│       │   │                       │       ├── NativeSplitColTransBitMatrix.java
│       │   │                       │       ├── NativeSplitRowTransBitMatrix.java
│       │   │                       │       ├── NativeTransBitMatrix.java
│       │   │                       │       ├── TransBitMatrix.java
│       │   │                       │       └── TransBitMatrixFactory.java
│       │   │                       ├── bitvector/
│       │   │                       │   ├── BigIntegerBitVector.java
│       │   │                       │   ├── BitVector.java
│       │   │                       │   ├── BitVectorFactory.java
│       │   │                       │   ├── BytesBitVector.java
│       │   │                       │   └── CombinedBitVector.java
│       │   │                       ├── bristol/
│       │   │                       │   ├── AbstractBristolBmmGenerator.java
│       │   │                       │   ├── AbstractBristolFashionGenerator.java
│       │   │                       │   ├── AbstractBristolFashionLowMcGenerator.java
│       │   │                       │   ├── BlockBmmLookupCode.java
│       │   │                       │   ├── BristolFashionBmmGenerator.java
│       │   │                       │   ├── BristolFashionEvaluator.java
│       │   │                       │   ├── BristolFashionLowMcFileGenerator.java
│       │   │                       │   ├── BristolFashionType.java
│       │   │                       │   ├── GateOperation.java
│       │   │                       │   └── GrayCodeGenerator.java
│       │   │                       ├── coder/
│       │   │                       │   ├── Coder.java
│       │   │                       │   ├── linear/
│       │   │                       │   │   ├── AbstractBchCoder.java
│       │   │                       │   │   ├── Bch065By448Coder.java
│       │   │                       │   │   ├── Bch072By462Coder.java
│       │   │                       │   │   ├── Bch076By511Coder.java
│       │   │                       │   │   ├── Bch084By495Coder.java
│       │   │                       │   │   ├── Bch090By495Coder.java
│       │   │                       │   │   ├── Bch132By583Coder.java
│       │   │                       │   │   ├── Bch138By594Coder.java
│       │   │                       │   │   ├── Bch144By605Coder.java
│       │   │                       │   │   ├── Bch150By616Coder.java
│       │   │                       │   │   ├── Bch156By627Coder.java
│       │   │                       │   │   ├── Bch162By638Coder.java
│       │   │                       │   │   ├── Bch168By649Coder.java
│       │   │                       │   │   ├── Bch174By660Coder.java
│       │   │                       │   │   ├── Bch210By732Coder.java
│       │   │                       │   │   ├── Bch217By744Coder.java
│       │   │                       │   │   ├── Bch231By768Coder.java
│       │   │                       │   │   ├── Bch238By776Coder.java
│       │   │                       │   │   ├── HadamardCoder.java
│       │   │                       │   │   ├── LinearCoder.java
│       │   │                       │   │   ├── LinearCoderFactory.java
│       │   │                       │   │   └── ReputationCoder.java
│       │   │                       │   └── random/
│       │   │                       │       ├── RandomCoder.java
│       │   │                       │       └── RandomCoderUtils.java
│       │   │                       ├── crypto/
│       │   │                       │   ├── commit/
│       │   │                       │   │   ├── AbstractRoBcCommit.java
│       │   │                       │   │   ├── AbstractRoJdkCommit.java
│       │   │                       │   │   ├── Commit.java
│       │   │                       │   │   ├── CommitFactory.java
│       │   │                       │   │   ├── RoBcSha256Commit.java
│       │   │                       │   │   ├── RoBcSm3Commit.java
│       │   │                       │   │   └── RoJdkSha256Commit.java
│       │   │                       │   ├── crhf/
│       │   │                       │   │   ├── Crhf.java
│       │   │                       │   │   ├── CrhfFactory.java
│       │   │                       │   │   ├── FixedKeyMmoCrhf.java
│       │   │                       │   │   ├── JdkMmoSigmaCrhf.java
│       │   │                       │   │   ├── MmoCrhf.java
│       │   │                       │   │   └── SimdMmoSigmaCrhf.java
│       │   │                       │   ├── ecc/
│       │   │                       │   │   ├── AbstractEcc.java
│       │   │                       │   │   ├── AbstractNativeEcc.java
│       │   │                       │   │   ├── ByteEccFactory.java
│       │   │                       │   │   ├── ByteFullEcc.java
│       │   │                       │   │   ├── ByteMulEcc.java
│       │   │                       │   │   ├── ByteMulElligatorEcc.java
│       │   │                       │   │   ├── Ecc.java
│       │   │                       │   │   ├── EccFactory.java
│       │   │                       │   │   ├── NativeEcc.java
│       │   │                       │   │   ├── WindowMethod.java
│       │   │                       │   │   ├── bc/
│       │   │                       │   │   │   ├── Curve25519BcEcc.java
│       │   │                       │   │   │   ├── Ed25519BcByteFullEcc.java
│       │   │                       │   │   │   ├── Ed25519BcEcc.java
│       │   │                       │   │   │   ├── SecP256k1BcEcc.java
│       │   │                       │   │   │   ├── SecP256r1BcEcc.java
│       │   │                       │   │   │   ├── Sm2P256v1BcEcc.java
│       │   │                       │   │   │   ├── X25519BcByteMulEcc.java
│       │   │                       │   │   │   └── X25519BcByteMulElligatorEcc.java
│       │   │                       │   │   ├── cafe/
│       │   │                       │   │   │   ├── CafeAffineNielsPoint.java
│       │   │                       │   │   │   ├── CafeCompletedPoint.java
│       │   │                       │   │   │   ├── CafeConstantTimeUtils.java
│       │   │                       │   │   │   ├── CafeConstants.java
│       │   │                       │   │   │   ├── CafeEdwardsCompressedPoint.java
│       │   │                       │   │   │   ├── CafeEdwardsPoint.java
│       │   │                       │   │   │   ├── CafeEdwardsPrecomputeTable.java
│       │   │                       │   │   │   ├── CafeFieldElement.java
│       │   │                       │   │   │   ├── CafeProjectiveNielsPoint.java
│       │   │                       │   │   │   ├── CafeProjectivePoint.java
│       │   │                       │   │   │   ├── CafeRistrettoCompressedPoint.java
│       │   │                       │   │   │   ├── CafeRistrettoGeneratorTable.java
│       │   │                       │   │   │   ├── CafeRistrettoPoint.java
│       │   │                       │   │   │   ├── CafeScalar.java
│       │   │                       │   │   │   ├── CafeUnpackedScalar.java
│       │   │                       │   │   │   ├── Ed25519CafeByteFullEcc.java
│       │   │                       │   │   │   └── RistrettoCafeByteFullEcc.java
│       │   │                       │   │   ├── fourq/
│       │   │                       │   │   │   └── FourqByteFullEcc.java
│       │   │                       │   │   ├── openssl/
│       │   │                       │   │   │   ├── AbstractOpensslEcc.java
│       │   │                       │   │   │   ├── SecP256k1OpensslEcc.java
│       │   │                       │   │   │   ├── SecP256k1OpensslNativeEcc.java
│       │   │                       │   │   │   ├── SecP256r1OpensslEcc.java
│       │   │                       │   │   │   ├── SecP256r1OpensslNativeEcc.java
│       │   │                       │   │   │   ├── Sm2P256v1OpensslEcc.java
│       │   │                       │   │   │   └── Sm2P256v1OpensslNativeEcc.java
│       │   │                       │   │   ├── sodium/
│       │   │                       │   │   │   ├── Ed25519SodiumByteFullEcc.java
│       │   │                       │   │   │   └── X25519SodiumByteMulEcc.java
│       │   │                       │   │   └── utils/
│       │   │                       │   │       ├── ByteEccUtils.java
│       │   │                       │   │       ├── Curve25519FieldUtils.java
│       │   │                       │   │       ├── Ed25519ByteEccUtils.java
│       │   │                       │   │       ├── FourqByteEccUtils.java
│       │   │                       │   │       └── X25519ByteEccUtils.java
│       │   │                       │   ├── engine/
│       │   │                       │   │   ├── JdkSm4Engine.java
│       │   │                       │   │   └── Rijndael256Engine.java
│       │   │                       │   ├── hash/
│       │   │                       │   │   ├── AbstractJdkHash.java
│       │   │                       │   │   ├── BcBlake2b160Hash.java
│       │   │                       │   │   ├── BcSha3Series256Hash.java
│       │   │                       │   │   ├── BcSha3Series512Hash.java
│       │   │                       │   │   ├── BcShake128Hash.java
│       │   │                       │   │   ├── BcShake256Hash.java
│       │   │                       │   │   ├── BcSm3Hash.java
│       │   │                       │   │   ├── Hash.java
│       │   │                       │   │   ├── HashFactory.java
│       │   │                       │   │   ├── JdkSha256Hash.java
│       │   │                       │   │   ├── NativeBlake2b160Hash.java
│       │   │                       │   │   ├── NativeBlake3Hash.java
│       │   │                       │   │   └── NativeSha256Hash.java
│       │   │                       │   ├── kdf/
│       │   │                       │   │   ├── BcBlake2bKdf.java
│       │   │                       │   │   ├── BcSm3Kdf.java
│       │   │                       │   │   ├── JdkSha256Kdf.java
│       │   │                       │   │   ├── Kdf.java
│       │   │                       │   │   ├── KdfFactory.java
│       │   │                       │   │   ├── NativeBlake2bKdf.java
│       │   │                       │   │   ├── NativeBlake3Kdf.java
│       │   │                       │   │   └── NativeSha256Kdf.java
│       │   │                       │   ├── kyber/
│       │   │                       │   │   ├── KyberEngine.java
│       │   │                       │   │   ├── KyberEngineFactory.java
│       │   │                       │   │   ├── engine/
│       │   │                       │   │   │   ├── KyberCcaEngine.java
│       │   │                       │   │   │   ├── KyberCpaEngine.java
│       │   │                       │   │   │   └── KyberEngineHelper.java
│       │   │                       │   │   ├── params/
│       │   │                       │   │   │   ├── KyberKeyPair.java
│       │   │                       │   │   │   ├── KyberParams.java
│       │   │                       │   │   │   ├── KyberUniformRandom.java
│       │   │                       │   │   │   └── UnpackedCiphertext.java
│       │   │                       │   │   └── utils/
│       │   │                       │   │       ├── ByteOps.java
│       │   │                       │   │       ├── Ntt.java
│       │   │                       │   │       └── Poly.java
│       │   │                       │   ├── prf/
│       │   │                       │   │   ├── BcSip128HashPrf.java
│       │   │                       │   │   ├── BcSipHashPrf.java
│       │   │                       │   │   ├── BcSm4CbcPrf.java
│       │   │                       │   │   ├── JdkAesCbcPrf.java
│       │   │                       │   │   ├── Prf.java
│       │   │                       │   │   └── PrfFactory.java
│       │   │                       │   ├── prg/
│       │   │                       │   │   ├── BcSm4CtrPrg.java
│       │   │                       │   │   ├── BcSm4EcbPrg.java
│       │   │                       │   │   ├── JdkAesCtrPrg.java
│       │   │                       │   │   ├── JdkAesEcbPrg.java
│       │   │                       │   │   ├── JdkSecureRandomPrg.java
│       │   │                       │   │   ├── Prg.java
│       │   │                       │   │   └── PrgFactory.java
│       │   │                       │   ├── prp/
│       │   │                       │   │   ├── BcSm4Prp.java
│       │   │                       │   │   ├── DefaultFixedKeyPrp.java
│       │   │                       │   │   ├── FixedKeyPrp.java
│       │   │                       │   │   ├── JdkAesPrp.java
│       │   │                       │   │   ├── JdkBytesLowMcPrp.java
│       │   │                       │   │   ├── JdkLongsLowMcPrp.java
│       │   │                       │   │   ├── NativeAesPrp.java
│       │   │                       │   │   ├── Prp.java
│       │   │                       │   │   └── PrpFactory.java
│       │   │                       │   ├── stream/
│       │   │                       │   │   ├── BcAesOfbStreamCipher.java
│       │   │                       │   │   ├── BcSm4OfbStreamCipher.java
│       │   │                       │   │   ├── BcZuc128StreamCipher.java
│       │   │                       │   │   ├── JdkAesOfbStreamCipher.java
│       │   │                       │   │   ├── StreamCipher.java
│       │   │                       │   │   └── StreamCipherFactory.java
│       │   │                       │   └── tcrhf/
│       │   │                       │       ├── Tcrhf.java
│       │   │                       │       ├── TcrhfFactory.java
│       │   │                       │       └── TmmoTcrhf.java
│       │   │                       ├── f3hash/
│       │   │                       │   ├── F3Hash.java
│       │   │                       │   ├── F3HashFactory.java
│       │   │                       │   └── LongF3Hash.java
│       │   │                       ├── galoisfield/
│       │   │                       │   ├── BigIntegerField.java
│       │   │                       │   ├── BigIntegerRing.java
│       │   │                       │   ├── ByteField.java
│       │   │                       │   ├── ByteRing.java
│       │   │                       │   ├── BytesField.java
│       │   │                       │   ├── BytesRing.java
│       │   │                       │   ├── LongField.java
│       │   │                       │   ├── LongRing.java
│       │   │                       │   ├── Z3ByteField.java
│       │   │                       │   ├── Z3Utils.java
│       │   │                       │   ├── gf2e/
│       │   │                       │   │   ├── AbstractGf064.java
│       │   │                       │   │   ├── AbstractGf128.java
│       │   │                       │   │   ├── AbstractGf2e.java
│       │   │                       │   │   ├── CombinedGf064.java
│       │   │                       │   │   ├── CombinedGf128.java
│       │   │                       │   │   ├── Gf2e.java
│       │   │                       │   │   ├── Gf2eFactory.java
│       │   │                       │   │   ├── Gf2eGadget.java
│       │   │                       │   │   ├── Gf2eManager.java
│       │   │                       │   │   ├── JdkGf001.java
│       │   │                       │   │   ├── JdkGf002.java
│       │   │                       │   │   ├── JdkGf004.java
│       │   │                       │   │   ├── JdkGf008.java
│       │   │                       │   │   ├── JdkGf016.java
│       │   │                       │   │   ├── JdkGf032.java
│       │   │                       │   │   ├── JdkGf064.java
│       │   │                       │   │   ├── JdkGf128.java
│       │   │                       │   │   ├── JdkGf2eUtils.java
│       │   │                       │   │   ├── NtlGf2e.java
│       │   │                       │   │   ├── NtlNativeGf2e.java
│       │   │                       │   │   └── RingsGf2e.java
│       │   │                       │   ├── gf2k/
│       │   │                       │   │   ├── AbstractGf2k.java
│       │   │                       │   │   ├── CombinedGf2k.java
│       │   │                       │   │   ├── Gf2k.java
│       │   │                       │   │   ├── Gf2kFactory.java
│       │   │                       │   │   ├── Gf2kGadget.java
│       │   │                       │   │   ├── JdkGf2k.java
│       │   │                       │   │   ├── NtlGf2k.java
│       │   │                       │   │   └── RingsGf2k.java
│       │   │                       │   ├── sgf2k/
│       │   │                       │   │   ├── AbstractSubSgf2k.java
│       │   │                       │   │   ├── Dgf2k.java
│       │   │                       │   │   ├── Dgf2kFactory.java
│       │   │                       │   │   ├── NtlSubSgf2k.java
│       │   │                       │   │   ├── RingsSubSgf2k.java
│       │   │                       │   │   ├── Sgf2k.java
│       │   │                       │   │   ├── Sgf2k001.java
│       │   │                       │   │   ├── Sgf2k128.java
│       │   │                       │   │   ├── Sgf2kFactory.java
│       │   │                       │   │   └── Sgf2kManager.java
│       │   │                       │   ├── zl/
│       │   │                       │   │   ├── AbstractZl.java
│       │   │                       │   │   ├── JdkZl.java
│       │   │                       │   │   ├── Zl.java
│       │   │                       │   │   └── ZlFactory.java
│       │   │                       │   ├── zl64/
│       │   │                       │   │   ├── AbstractZl64.java
│       │   │                       │   │   ├── JdkZl64.java
│       │   │                       │   │   ├── Zl64.java
│       │   │                       │   │   └── Zl64Factory.java
│       │   │                       │   ├── zn/
│       │   │                       │   │   ├── AbstractZn.java
│       │   │                       │   │   ├── JdkZn.java
│       │   │                       │   │   ├── Zn.java
│       │   │                       │   │   └── ZnFactory.java
│       │   │                       │   ├── zn64/
│       │   │                       │   │   ├── AbstractZn64.java
│       │   │                       │   │   ├── RingsZn64.java
│       │   │                       │   │   ├── Zn64.java
│       │   │                       │   │   └── Zn64Factory.java
│       │   │                       │   ├── zp/
│       │   │                       │   │   ├── AbstractZp.java
│       │   │                       │   │   ├── JdkZp.java
│       │   │                       │   │   ├── Zp.java
│       │   │                       │   │   ├── ZpFactory.java
│       │   │                       │   │   ├── ZpGadget.java
│       │   │                       │   │   └── ZpManager.java
│       │   │                       │   └── zp64/
│       │   │                       │       ├── AbstractZp64.java
│       │   │                       │       ├── RingsZp64.java
│       │   │                       │       ├── Zp64.java
│       │   │                       │       ├── Zp64Factory.java
│       │   │                       │       ├── Zp64Gadget.java
│       │   │                       │       └── Zp64Manager.java
│       │   │                       ├── hash/
│       │   │                       │   ├── IntHash.java
│       │   │                       │   ├── IntHashFactory.java
│       │   │                       │   ├── LongHash.java
│       │   │                       │   ├── LongHashFactory.java
│       │   │                       │   ├── bobhash/
│       │   │                       │   │   ├── BobHashUtils.java
│       │   │                       │   │   ├── BobIntHash.java
│       │   │                       │   │   └── BobLongHash.java
│       │   │                       │   └── xxhash/
│       │   │                       │       ├── XxIntHash.java
│       │   │                       │       └── XxLongHash.java
│       │   │                       ├── hashbin/
│       │   │                       │   ├── MaxBinSizeUtils.java
│       │   │                       │   ├── object/
│       │   │                       │   │   ├── EmptyPadHashBin.java
│       │   │                       │   │   ├── HashBin.java
│       │   │                       │   │   ├── HashBinEntry.java
│       │   │                       │   │   ├── PhaseHashBin.java
│       │   │                       │   │   ├── RandomPadHashBin.java
│       │   │                       │   │   ├── TwoChoiceHashBin.java
│       │   │                       │   │   └── cuckoo/
│       │   │                       │   │       ├── AbstractNoStashCuckooHashBin.java
│       │   │                       │   │       ├── CuckooHashBin.java
│       │   │                       │   │       ├── CuckooHashBinFactory.java
│       │   │                       │   │       ├── NaiveCuckooHashBin.java
│       │   │                       │   │       ├── NaiveNoStashCuckooHashBin.java
│       │   │                       │   │       ├── NoStashCuckooHashBin.java
│       │   │                       │   │       ├── NoStashCuckooHashBinUtils.java
│       │   │                       │   │       ├── OneHashCuckooHashBin.java
│       │   │                       │   │       └── Psz18NoStashCuckooHashBin.java
│       │   │                       │   └── primitive/
│       │   │                       │       ├── ArraySimpleIntHashBin.java
│       │   │                       │       ├── DynamicSimpleIntHashBin.java
│       │   │                       │       ├── IntHashBin.java
│       │   │                       │       └── cuckoo/
│       │   │                       │           ├── AbstractIntNoStashCuckooHashBin.java
│       │   │                       │           ├── IntCuckooHashBinFactory.java
│       │   │                       │           ├── IntNoStashCuckooHashBin.java
│       │   │                       │           ├── NaiveIntNoStashCuckooHashBin.java
│       │   │                       │           └── Psz18IntNoStashCuckooHashBin.java
│       │   │                       ├── metrics/
│       │   │                       │   ├── HeavyHitterMetrics.java
│       │   │                       │   └── KendallCorrelation.java
│       │   │                       ├── network/
│       │   │                       │   ├── PermutationNetwork.java
│       │   │                       │   ├── PermutationNetworkFactory.java
│       │   │                       │   ├── PermutationNetworkUtils.java
│       │   │                       │   ├── benes/
│       │   │                       │   │   ├── AbstractBenesNetwork.java
│       │   │                       │   │   ├── BenesNetwork.java
│       │   │                       │   │   ├── BenesNetworkFactory.java
│       │   │                       │   │   ├── JdkBenesNetwork.java
│       │   │                       │   │   └── NativeBenesNetwork.java
│       │   │                       │   ├── decomposer/
│       │   │                       │   │   ├── AbstractPermutationDecomposer.java
│       │   │                       │   │   ├── Cgp20PermutationDecomposer.java
│       │   │                       │   │   ├── Lll24PermutationDecomposer.java
│       │   │                       │   │   ├── PermutationDecomposer.java
│       │   │                       │   │   └── PermutationDecomposerFactory.java
│       │   │                       │   └── waksman/
│       │   │                       │       ├── AbstractWaksmanNetwork.java
│       │   │                       │       ├── JdkWaksmanNetwork.java
│       │   │                       │       ├── NativeWaksmanNetwork.java
│       │   │                       │       ├── WaksmanNetwork.java
│       │   │                       │       └── WaksmanNetworkFactory.java
│       │   │                       ├── polynomial/
│       │   │                       │   ├── gf2e/
│       │   │                       │   │   ├── AbstractGf2ePoly.java
│       │   │                       │   │   ├── AbstractRingsGf2ePoly.java
│       │   │                       │   │   ├── Gf2ePoly.java
│       │   │                       │   │   ├── Gf2ePolyFactory.java
│       │   │                       │   │   ├── NtlGf2ePoly.java
│       │   │                       │   │   ├── NtlNativeGf2ePoly.java
│       │   │                       │   │   ├── RingsLagrangeGf2ePoly.java
│       │   │                       │   │   └── RingsNewtonGf2ePoly.java
│       │   │                       │   ├── power/
│       │   │                       │   │   ├── PowersDag.java
│       │   │                       │   │   └── PowersNode.java
│       │   │                       │   ├── zp/
│       │   │                       │   │   ├── AbstractRingsZpPoly.java
│       │   │                       │   │   ├── AbstractZpPoly.java
│       │   │                       │   │   ├── AbstractZpTreePoly.java
│       │   │                       │   │   ├── JdkLagrangeZpPoly.java
│       │   │                       │   │   ├── JdkNewtonZpPoly.java
│       │   │                       │   │   ├── NtlTreeZpPoly.java
│       │   │                       │   │   ├── NtlZpPoly.java
│       │   │                       │   │   ├── RingsLagrangeZpPoly.java
│       │   │                       │   │   ├── RingsNewtonZpPoly.java
│       │   │                       │   │   ├── RingsZpTreePoly.java
│       │   │                       │   │   ├── ZpPoly.java
│       │   │                       │   │   ├── ZpPolyFactory.java
│       │   │                       │   │   └── ZpTreePoly.java
│       │   │                       │   └── zp64/
│       │   │                       │       ├── AbstractRingsZp64Poly.java
│       │   │                       │       ├── AbstractZp64Poly.java
│       │   │                       │       ├── NtlZp64Poly.java
│       │   │                       │       ├── RingsLagrangeZp64Poly.java
│       │   │                       │       ├── RingsNewtonZp64Poly.java
│       │   │                       │       ├── Zp64Poly.java
│       │   │                       │       └── Zp64PolyFactory.java
│       │   │                       └── utils/
│       │   │                           ├── BigDecimalUtils.java
│       │   │                           ├── BigIntegerUtils.java
│       │   │                           ├── BinaryUtils.java
│       │   │                           ├── BlockUtils.java
│       │   │                           ├── BytesUtils.java
│       │   │                           ├── CommonUtils.java
│       │   │                           ├── DoubleUtils.java
│       │   │                           ├── Gf2xUtils.java
│       │   │                           ├── IntUtils.java
│       │   │                           ├── LongUtils.java
│       │   │                           ├── ObjectUtils.java
│       │   │                           ├── PropertiesUtils.java
│       │   │                           ├── RankUtils.java
│       │   │                           └── SerializeUtils.java
│       │   └── resources/
│       │       ├── bristol/
│       │       │   ├── basic/
│       │       │   │   ├── adder64.txt
│       │       │   │   ├── aes_128.txt
│       │       │   │   ├── divide64.txt
│       │       │   │   ├── mult64.txt
│       │       │   │   ├── neg64.txt
│       │       │   │   └── sub64.txt
│       │       │   └── extend/
│       │       │       ├── adder64.txt
│       │       │       ├── aes_128.txt
│       │       │       ├── divide64.txt
│       │       │       ├── mult64.txt
│       │       │       ├── neg64.txt
│       │       │       └── sub64.txt
│       │       ├── gen_matrix/
│       │       │   ├── mx132by583.txt
│       │       │   ├── mx138by594.txt
│       │       │   ├── mx144by605.txt
│       │       │   ├── mx150by616.txt
│       │       │   ├── mx156by627.txt
│       │       │   ├── mx162by638.txt
│       │       │   ├── mx168by649.txt
│       │       │   ├── mx174by660.txt
│       │       │   ├── mx210by732.txt
│       │       │   ├── mx217by744.txt
│       │       │   ├── mx231by768.txt
│       │       │   ├── mx238by776.txt
│       │       │   ├── mx65by448.txt
│       │       │   ├── mx72by462.txt
│       │       │   ├── mx76by511.txt
│       │       │   ├── mx84by495.txt
│       │       │   └── mx90by495.txt
│       │       └── low_mc/
│       │           ├── lowmc_128_128_192.txt
│       │           ├── lowmc_128_128_20.txt
│       │           ├── lowmc_128_128_208.txt
│       │           ├── lowmc_128_128_21.txt
│       │           ├── lowmc_128_128_23.txt
│       │           ├── lowmc_128_128_287.txt
│       │           └── lowmc_128_128_32.txt
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── common/
│           │                   └── tool/
│           │                       ├── MathPreconditionsTest.java
│           │                       ├── bitmatrix/
│           │                       │   ├── dense/
│           │                       │   │   ├── DenseBitMatrixTest.java
│           │                       │   │   ├── SquareDenseBitMatrixEfficiencyTest.java
│           │                       │   │   └── SquareDenseBitMatrixTest.java
│           │                       │   ├── sparse/
│           │                       │   │   ├── ExtremeSparseBitMatrixTest.java
│           │                       │   │   ├── NaiveSparseBitMatrixTest.java
│           │                       │   │   └── TriSparseBitMatrixTest.java
│           │                       │   └── trans/
│           │                       │       ├── TransBitMatrixEfficiencyTest.java
│           │                       │       └── TransBitMatrixTest.java
│           │                       ├── bitvector/
│           │                       │   ├── BitVectorEfficiencyTest.java
│           │                       │   └── BitVectorTest.java
│           │                       ├── bristol/
│           │                       │   ├── BlockBmmLookupCodeTest.java
│           │                       │   ├── BristolFashionBmmGeneratorTest.java
│           │                       │   ├── BristolFashionEvaluatorTest.java
│           │                       │   ├── BristolFashionLowMcFileGeneratorTest.java
│           │                       │   └── GrayCoderGeneratorTest.java
│           │                       ├── coder/
│           │                       │   ├── Bch076By511CoderTest.java
│           │                       │   ├── HadamardCoderTest.java
│           │                       │   ├── LinearCoderTest.java
│           │                       │   ├── RandomCoderTest.java
│           │                       │   ├── RandomCoderUtilsTest.java
│           │                       │   └── ReputationCoderTest.java
│           │                       ├── crypto/
│           │                       │   ├── commit/
│           │                       │   │   └── CommitTest.java
│           │                       │   ├── crhf/
│           │                       │   │   ├── CrhfConsistencyTest.java
│           │                       │   │   ├── CrhfEfficiencyTest.java
│           │                       │   │   └── CrhfTest.java
│           │                       │   ├── ecc/
│           │                       │   │   ├── ByteEccConsistencyTest.java
│           │                       │   │   ├── ByteFullEccTest.java
│           │                       │   │   ├── ByteMulEccTest.java
│           │                       │   │   ├── ByteMulElligatorEccTest.java
│           │                       │   │   ├── EccConsistencyTest.java
│           │                       │   │   ├── EccEfficiencyTest.java
│           │                       │   │   ├── EccMixTest.java
│           │                       │   │   ├── EccTest.java
│           │                       │   │   └── cafe/
│           │                       │   │       ├── CafeConstantTimeUtilsTest.java
│           │                       │   │       ├── CafeConstantsTest.java
│           │                       │   │       ├── CafeEdwardsCompressedPointTest.java
│           │                       │   │       ├── CafeEdwardsPointTest.java
│           │                       │   │       ├── CafeEdwardsPrecomputeTableTest.java
│           │                       │   │       ├── CafeFieldElementTest.java
│           │                       │   │       ├── CafeRistrettoCompressedPointTest.java
│           │                       │   │       ├── CafeRistrettoPointTest.java
│           │                       │   │       ├── CafeScalarTest.java
│           │                       │   │       └── CafeUnpackedScalarTest.java
│           │                       │   ├── engine/
│           │                       │   │   └── Rijndael256EngineTest.java
│           │                       │   ├── hash/
│           │                       │   │   ├── HashConsistencyTest.java
│           │                       │   │   ├── HashEfficiencyTest.java
│           │                       │   │   └── HashTest.java
│           │                       │   ├── kdf/
│           │                       │   │   ├── KdfConsistencyTest.java
│           │                       │   │   ├── KdfEfficiencyTest.java
│           │                       │   │   └── KdfTest.java
│           │                       │   ├── kyber/
│           │                       │   │   └── KyberEngineTest.java
│           │                       │   ├── prf/
│           │                       │   │   ├── PrfEfficiencyTest.java
│           │                       │   │   └── PrfTest.java
│           │                       │   ├── prg/
│           │                       │   │   ├── PrgEfficiencyTest.java
│           │                       │   │   └── PrgTest.java
│           │                       │   ├── prp/
│           │                       │   │   ├── PrpConsistencyTest.java
│           │                       │   │   ├── PrpEfficiencyTest.java
│           │                       │   │   └── PrpTest.java
│           │                       │   ├── stream/
│           │                       │   │   ├── StreamCipherEfficiencyTest.java
│           │                       │   │   └── StreamCipherTest.java
│           │                       │   └── tcrhf/
│           │                       │       ├── TcrhfEfficiencyTest.java
│           │                       │       └── TcrhfTest.java
│           │                       ├── f3hash/
│           │                       │   ├── F3HashEfficiencyTest.java
│           │                       │   └── F3HashTest.java
│           │                       ├── galoisfield/
│           │                       │   ├── BigIntegerFieldTest.java
│           │                       │   ├── BigIntegerRingTest.java
│           │                       │   ├── BytesFieldEfficiencyTest.java
│           │                       │   ├── BytesFieldTest.java
│           │                       │   ├── BytesRingEfficiencyTest.java
│           │                       │   ├── BytesRingTest.java
│           │                       │   ├── GaloisfieldTestUtils.java
│           │                       │   ├── LongFieldEfficiencyTest.java
│           │                       │   ├── LongFieldTest.java
│           │                       │   ├── LongRingEfficiencyTest.java
│           │                       │   ├── LongRingTest.java
│           │                       │   ├── Z3ByteFieldTest.java
│           │                       │   ├── Z3UtilsTest.java
│           │                       │   ├── gf2e/
│           │                       │   │   ├── Gf2eConsistencyTest.java
│           │                       │   │   ├── Gf2eGadgetTest.java
│           │                       │   │   ├── Gf2eManagerTest.java
│           │                       │   │   ├── Gf2eTest.java
│           │                       │   │   └── JdkGf2eLookupTableTest.java
│           │                       │   ├── gf2k/
│           │                       │   │   ├── Gf2kConsistencyTest.java
│           │                       │   │   ├── Gf2kGadgetTest.java
│           │                       │   │   └── Gf2kTest.java
│           │                       │   ├── sgf2k/
│           │                       │   │   ├── Sgf2kConsistencyTest.java
│           │                       │   │   ├── Sgf2kEfficiencyTest.java
│           │                       │   │   ├── Sgf2kManagerTest.java
│           │                       │   │   └── Sgf2kTest.java
│           │                       │   ├── zl/
│           │                       │   │   ├── Zl64SpecialTest.java
│           │                       │   │   └── ZlTest.java
│           │                       │   ├── zn/
│           │                       │   │   └── ZnTest.java
│           │                       │   ├── zn64/
│           │                       │   │   └── Zn64Test.java
│           │                       │   ├── zp/
│           │                       │   │   ├── ZpGadgetTest.java
│           │                       │   │   └── ZpTest.java
│           │                       │   └── zp64/
│           │                       │       ├── Zp64GadgetTest.java
│           │                       │       └── Zp64Test.java
│           │                       ├── hash/
│           │                       │   ├── IntHashEfficiencyTest.java
│           │                       │   ├── IntHashTest.java
│           │                       │   ├── LongHashEfficiencyTest.java
│           │                       │   ├── LongHashTest.java
│           │                       │   └── bobhash/
│           │                       │       ├── BobIntHashTest.java
│           │                       │       └── BobLongHashTest.java
│           │                       ├── hashbin/
│           │                       │   ├── HashBinTestUtils.java
│           │                       │   ├── MaxBinSizeUtilsTest.java
│           │                       │   ├── object/
│           │                       │   │   ├── EmptyPadHashBinEfficiencyTest.java
│           │                       │   │   ├── EmptyPadHashBinTest.java
│           │                       │   │   ├── PhaseHashBinTest.java
│           │                       │   │   ├── RandomPadHashBinEfficiencyTest.java
│           │                       │   │   ├── RandomPadHashBinTest.java
│           │                       │   │   ├── TwoChoiceHashBinTest.java
│           │                       │   │   └── cuckoo/
│           │                       │   │       ├── CuckooHashBinEfficiencyTest.java
│           │                       │   │       ├── CuckooHashBinParamsTest.java
│           │                       │   │       ├── CuckooHashBinTest.java
│           │                       │   │       ├── NoStashCuckooHashBinTest.java
│           │                       │   │       └── OneHashCuckooHashBinTest.java
│           │                       │   └── primitive/
│           │                       │       ├── SimpleIntHashBinEfficiencyTest.java
│           │                       │       ├── SimpleIntHashBinTest.java
│           │                       │       └── cuckoo/
│           │                       │           ├── IntCuckooHashBinEfficiencyTest.java
│           │                       │           └── IntCuckooHashBinTest.java
│           │                       ├── metrics/
│           │                       │   ├── HeavyHitterMetricsTest.java
│           │                       │   └── KendallCorrelationTest.java
│           │                       ├── network/
│           │                       │   ├── PermutationNetworkEfficiencyTest.java
│           │                       │   ├── PermutationNetworkTest.java
│           │                       │   ├── benes/
│           │                       │   │   └── BenesNetworkTest.java
│           │                       │   ├── decomposer/
│           │                       │   │   ├── PermutationDecomposerEfficiencyTest.java
│           │                       │   │   └── PermutationDecomposerTest.java
│           │                       │   └── waksman/
│           │                       │       └── WaksmanNetworkTest.java
│           │                       ├── polynomial/
│           │                       │   ├── gf2e/
│           │                       │   │   ├── Gf2ePolyEfficiencyTest.java
│           │                       │   │   └── Gf2ePolyTest.java
│           │                       │   ├── zp/
│           │                       │   │   ├── ZpPolyEfficiencyTest.java
│           │                       │   │   ├── ZpPolyTest.java
│           │                       │   │   ├── ZpTreePolyEfficiencyTest.java
│           │                       │   │   └── ZpTreePolyTest.java
│           │                       │   └── zp64/
│           │                       │       ├── Zp64PolyEfficiencyTest.java
│           │                       │       └── Zp64PolyTest.java
│           │                       └── utils/
│           │                           ├── BigIntegerUtilsTest.java
│           │                           ├── BinaryUtilsTest.java
│           │                           ├── BlockUtilsEfficiencyTest.java
│           │                           ├── BlockUtilsTest.java
│           │                           ├── BytesEfficiencyTest.java
│           │                           ├── BytesUtilsTest.java
│           │                           ├── CommonUtilsTest.java
│           │                           ├── DoubleUtilsTest.java
│           │                           ├── Gf2xUtilsTest.java
│           │                           ├── IntUtilsTest.java
│           │                           ├── LongUtilsTest.java
│           │                           └── SerializeUtilsTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-crypto-algs/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── crypto/
│       │                       └── algs/
│       │                           ├── iprf/
│       │                           │   ├── InversePrf.java
│       │                           │   └── PnmSampler.java
│       │                           ├── main/
│       │                           │   ├── AlgsMain.java
│       │                           │   └── popf/
│       │                           │       └── PopfMain.java
│       │                           ├── ope/
│       │                           │   ├── Bclo09LongOpeEngine.java
│       │                           │   └── Zlp24LongRopeEngine.java
│       │                           ├── popf/
│       │                           │   └── Zlp24LongPopfEngine.java
│       │                           ├── restriction/
│       │                           │   ├── AbstractLongRestriction.java
│       │                           │   ├── LongEmptyRestriction.java
│       │                           │   ├── LongLinearBoundRestriction.java
│       │                           │   ├── LongLinearMaxBoundRestriction.java
│       │                           │   ├── LongLinearMinBoundRestriction.java
│       │                           │   └── LongRestriction.java
│       │                           ├── smprp/
│       │                           │   ├── AdSmallDomainPrp.java
│       │                           │   ├── SmallDomainPrp.java
│       │                           │   └── SmallDomainPrpFactory.java
│       │                           └── utils/
│       │                               ├── distribution/
│       │                               │   ├── Coins.java
│       │                               │   ├── FastHgd.java
│       │                               │   ├── Hgd.java
│       │                               │   ├── HgdFactory.java
│       │                               │   ├── PreciseHgd.java
│       │                               │   └── RandomHgd.java
│       │                               └── range/
│       │                                   ├── BigIntegerRange.java
│       │                                   └── LongRange.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── crypto/
│           │                   └── algs/
│           │                       ├── iprf/
│           │                       │   └── PnmSamplerTest.java
│           │                       ├── ope/
│           │                       │   ├── LongOpeTest.java
│           │                       │   └── LongRopeTest.java
│           │                       ├── popf/
│           │                       │   └── LongPopfTest.java
│           │                       ├── smprp/
│           │                       │   └── SmallDomainPrpTest.java
│           │                       └── utils/
│           │                           ├── distribution/
│           │                           │   ├── CoinsTest.java
│           │                           │   └── HgdTest.java
│           │                           └── range/
│           │                               ├── BigIntegerRangeTest.java
│           │                               └── LongRangeTest.java
│           └── resources/
│               ├── conf_popf_example.conf
│               └── log4j.properties
├── mpc4j-crypto-fhe/
│   ├── mpc4j-crypto-fhe-seal/
│   │   ├── pom.xml
│   │   └── src/
│   │       ├── main/
│   │       │   └── java/
│   │       │       └── edu/
│   │       │           └── alibaba/
│   │       │               └── mpc4j/
│   │       │                   └── crypto/
│   │       │                       └── fhe/
│   │       │                           └── seal/
│   │       │                               ├── BatchEncoder.java
│   │       │                               ├── Ciphertext.java
│   │       │                               ├── CkksEncoder.java
│   │       │                               ├── Decryptor.java
│   │       │                               ├── Encryptor.java
│   │       │                               ├── Evaluator.java
│   │       │                               ├── GaloisKeys.java
│   │       │                               ├── KeyGenerator.java
│   │       │                               ├── KswitchKeys.java
│   │       │                               ├── Plaintext.java
│   │       │                               ├── PublicKey.java
│   │       │                               ├── RelinKeys.java
│   │       │                               ├── SecretKey.java
│   │       │                               ├── context/
│   │       │                               │   ├── EncryptionParameterQualifiers.java
│   │       │                               │   ├── EncryptionParameters.java
│   │       │                               │   ├── ErrorType.java
│   │       │                               │   ├── ParmsId.java
│   │       │                               │   ├── SchemeType.java
│   │       │                               │   └── SealContext.java
│   │       │                               ├── iterator/
│   │       │                               │   ├── CoeffIterator.java
│   │       │                               │   ├── PolyIterator.java
│   │       │                               │   ├── RnsIterator.java
│   │       │                               │   ├── SealIterator.java
│   │       │                               │   └── StrideIterator.java
│   │       │                               ├── modulus/
│   │       │                               │   ├── AbstractModulus.java
│   │       │                               │   ├── CoeffModulus.java
│   │       │                               │   ├── Modulus.java
│   │       │                               │   └── PlainModulus.java
│   │       │                               ├── ntt/
│   │       │                               │   ├── ModArithLazy.java
│   │       │                               │   ├── NttHandler.java
│   │       │                               │   ├── NttTables.java
│   │       │                               │   └── NttTool.java
│   │       │                               ├── rand/
│   │       │                               │   ├── AbstractPrng.java
│   │       │                               │   ├── AbstractUniformRandomGeneratorInfo.java
│   │       │                               │   ├── Blake2xbPrng.java
│   │       │                               │   ├── ClippedNormalDistribution.java
│   │       │                               │   ├── PrngType.java
│   │       │                               │   ├── Shake256Prng.java
│   │       │                               │   ├── UniformRandomGenerator.java
│   │       │                               │   ├── UniformRandomGeneratorFactory.java
│   │       │                               │   ├── UniformRandomGeneratorInfo.java
│   │       │                               │   └── primitive/
│   │       │                               │       ├── Blake2.java
│   │       │                               │       ├── Blake2b.java
│   │       │                               │       ├── Blake2xb.java
│   │       │                               │       └── Shake256.java
│   │       │                               ├── rns/
│   │       │                               │   ├── BaseConverter.java
│   │       │                               │   ├── RnsBase.java
│   │       │                               │   └── RnsTool.java
│   │       │                               ├── rq/
│   │       │                               │   ├── PolyArithmeticSmallMod.java
│   │       │                               │   └── PolyCore.java
│   │       │                               ├── serialization/
│   │       │                               │   ├── ComprModeType.java
│   │       │                               │   ├── SealCloneable.java
│   │       │                               │   ├── SealHeader.java
│   │       │                               │   ├── SealSerializable.java
│   │       │                               │   ├── SealVersion.java
│   │       │                               │   └── Serialization.java
│   │       │                               ├── utils/
│   │       │                               │   ├── AbstractDynArray.java
│   │       │                               │   ├── AbstractGaloisTool.java
│   │       │                               │   ├── Arithmetic.java
│   │       │                               │   ├── ComplexRoots.java
│   │       │                               │   ├── Constants.java
│   │       │                               │   ├── DwtHandler.java
│   │       │                               │   ├── DynArray.java
│   │       │                               │   ├── GaloisTool.java
│   │       │                               │   ├── GlobalVariables.java
│   │       │                               │   ├── HashFunction.java
│   │       │                               │   ├── HeStdParms.java
│   │       │                               │   ├── RingLwe.java
│   │       │                               │   ├── ScalingVariant.java
│   │       │                               │   └── ValCheck.java
│   │       │                               └── zq/
│   │       │                                   ├── Common.java
│   │       │                                   ├── MultiplyUintModOperand.java
│   │       │                                   ├── Numth.java
│   │       │                                   ├── UintArithmetic.java
│   │       │                                   ├── UintArithmeticMod.java
│   │       │                                   ├── UintArithmeticSmallMod.java
│   │       │                                   └── UintCore.java
│   │       └── test/
│   │           ├── java/
│   │           │   └── edu/
│   │           │       └── alibaba/
│   │           │           └── mpc4j/
│   │           │               └── crypto/
│   │           │                   └── fhe/
│   │           │                       └── seal/
│   │           │                           ├── BatchEncoderTest.java
│   │           │                           ├── CiphertextTest.java
│   │           │                           ├── CkksTest.java
│   │           │                           ├── EncryptorTest.java
│   │           │                           ├── EvaluatorTest.java
│   │           │                           ├── GaloisKeysTest.java
│   │           │                           ├── KeyGeneratorTest.java
│   │           │                           ├── PlaintextTest.java
│   │           │                           ├── PublicKeyTest.java
│   │           │                           ├── RelinKeysTest.java
│   │           │                           ├── SecretKeyTest.java
│   │           │                           ├── compatibility/
│   │           │                           │   └── SealBfvCompatibleTest.java
│   │           │                           ├── context/
│   │           │                           │   ├── EncryptionParametersTest.java
│   │           │                           │   └── SealContextTest.java
│   │           │                           ├── examples/
│   │           │                           │   ├── Example01BfvBasicsTest.java
│   │           │                           │   ├── Example02EncodersTest.java
│   │           │                           │   ├── Example03LevelsTest.java
│   │           │                           │   ├── Example04BgvBasicsTest.java
│   │           │                           │   ├── Example05CkksBasicsTest.java
│   │           │                           │   ├── Example06RotationTest.java
│   │           │                           │   ├── Example07SerializationTest.java
│   │           │                           │   ├── Example08PerformanceTest.java
│   │           │                           │   └── ExamplesUtils.java
│   │           │                           ├── modulus/
│   │           │                           │   ├── CoeffModulusTest.java
│   │           │                           │   └── ModulusTest.java
│   │           │                           ├── ntt/
│   │           │                           │   └── NttTest.java
│   │           │                           ├── rand/
│   │           │                           │   ├── UniformRandomGeneratorTest.java
│   │           │                           │   └── primitive/
│   │           │                           │       ├── Blake2bTest.java
│   │           │                           │       ├── Blake2xbTest.java
│   │           │                           │       └── Shake256Test.java
│   │           │                           ├── rns/
│   │           │                           │   ├── BaseConverterTest.java
│   │           │                           │   ├── RnsBaseTest.java
│   │           │                           │   └── RnsToolTest.java
│   │           │                           ├── rq/
│   │           │                           │   ├── PolyArithmeticSmallModTest.java
│   │           │                           │   └── PolyCoreTest.java
│   │           │                           ├── serialization/
│   │           │                           │   ├── SerializationTest.java
│   │           │                           │   └── TestCloneable.java
│   │           │                           ├── utils/
│   │           │                           │   ├── ClipNormalTest.java
│   │           │                           │   ├── ComplexRootsTest.java
│   │           │                           │   ├── DynArrayTest.java
│   │           │                           │   ├── GaloisToolTest.java
│   │           │                           │   └── HashFunctionTest.java
│   │           │                           └── zq/
│   │           │                               ├── CommonTest.java
│   │           │                               ├── NumthTest.java
│   │           │                               ├── StringToUint64Test.java
│   │           │                               ├── Uint64ToStringTest.java
│   │           │                               ├── UintArithmeticModTest.java
│   │           │                               ├── UintArithmeticSmallModTest.java
│   │           │                               ├── UintArithmeticTest.java
│   │           │                               └── UintCoreTest.java
│   │           └── resources/
│   │               ├── compatibility/
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_ciphertext_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_ciphertext_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_galois_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_galois_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_public_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_public_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_relinearization_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_relinearization_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_secret_key_data.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_secret_key_hex.txt
│   │               │   ├── bfv_4096_plain_16_coeff_20_20_seed_ciphertext_data.txt
│   │               │   └── bfv_4096_plain_16_coeff_20_20_seed_ciphertext_hex.txt
│   │               └── log4j.properties
│   └── pom.xml
├── mpc4j-crypto-phe/
│   ├── LICENSE.txt
│   ├── README.md
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── crypto/
│       │                       └── phe/
│       │                           ├── AbstractPheEngine.java
│       │                           ├── PheContextMismatchException.java
│       │                           ├── PheDecodeException.java
│       │                           ├── PheEncodeException.java
│       │                           ├── PheEngine.java
│       │                           ├── PheFactory.java
│       │                           ├── PheMathUtils.java
│       │                           ├── PheRuntimeException.java
│       │                           ├── PheSecLevel.java
│       │                           ├── PheType.java
│       │                           ├── impl/
│       │                           │   ├── ou98/
│       │                           │   │   ├── Ou98PheEngine.java
│       │                           │   │   ├── Ou98PhePrivateKey.java
│       │                           │   │   └── Ou98PhePublicKey.java
│       │                           │   └── pai99/
│       │                           │       ├── Pai99PheEngine.java
│       │                           │       ├── Pai99PhePrivateKey.java
│       │                           │       └── Pai99PhePublicKey.java
│       │                           └── params/
│       │                               ├── PheCiphertext.java
│       │                               ├── PheKeyGenParams.java
│       │                               ├── PheKeyParams.java
│       │                               ├── PheParams.java
│       │                               ├── PhePlaintext.java
│       │                               ├── PhePlaintextEncoder.java
│       │                               ├── PhePrivateKey.java
│       │                               └── PhePublicKey.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── crypto/
│           │                   └── phe/
│           │                       ├── PheEngineTestConfiguration.java
│           │                       ├── PheParamsTestConfiguration.java
│           │                       ├── PheTestUtils.java
│           │                       ├── impl/
│           │                       │   ├── PheAdditionTest.java
│           │                       │   ├── PheDivisionTest.java
│           │                       │   ├── PheEfficiencyTest.java
│           │                       │   ├── PheKeyGenTest.java
│           │                       │   ├── PheMultiplicationTest.java
│           │                       │   ├── PheRawTest.java
│           │                       │   └── PheSubtractionTest.java
│           │                       └── params/
│           │                           ├── PheCiphertextTest.java
│           │                           ├── PhePlaintextAdditionTest.java
│           │                           ├── PhePlaintextDivisionTest.java
│           │                           ├── PhePlaintextMultiplicationTest.java
│           │                           ├── PhePlaintextSubtractionTest.java
│           │                           └── PhePlaintextTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-cdp/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── cdp/
│       │                           ├── Cdp.java
│       │                           ├── CdpConfig.java
│       │                           ├── nominal/
│       │                           │   ├── Base2ExpCdp.java
│       │                           │   ├── Base2ExpCdpConfig.java
│       │                           │   ├── ExpCdp.java
│       │                           │   ├── ExpCdpConfig.java
│       │                           │   ├── NominalCdp.java
│       │                           │   ├── NominalCdpConfig.java
│       │                           │   ├── NominalCdpFactory.java
│       │                           │   ├── NounPair.java
│       │                           │   └── NounPairDistance.java
│       │                           └── numeric/
│       │                               ├── integral/
│       │                               │   ├── IntegralCdp.java
│       │                               │   ├── IntegralCdpConfig.java
│       │                               │   ├── IntegralCdpFactory.java
│       │                               │   ├── bound/
│       │                               │   │   ├── Base2ExpBoundIntegralCdp.java
│       │                               │   │   ├── Base2ExpBoundIntegralCdpConfig.java
│       │                               │   │   ├── BoundIntegralCdp.java
│       │                               │   │   ├── BoundIntegralCdpConfig.java
│       │                               │   │   ├── BoundIntegralCdpFactory.java
│       │                               │   │   ├── ExpBoundIntegralCdp.java
│       │                               │   │   ├── ExpBoundIntegralCdpConfig.java
│       │                               │   │   ├── NaiveBoundIntegralCdp.java
│       │                               │   │   └── NaiveBoundIntegralCdpConfig.java
│       │                               │   └── unbound/
│       │                               │       ├── UnboundIntegralCdp.java
│       │                               │       ├── UnboundIntegralCdpConfig.java
│       │                               │       ├── UnboundIntegralCdpFactory.java
│       │                               │       └── geometric/
│       │                               │           ├── ApacheGeometricCdp.java
│       │                               │           ├── ApacheGeometricCdpConfig.java
│       │                               │           ├── DiscreteGeometricCdp.java
│       │                               │           ├── DiscreteGeometricCdpConfig.java
│       │                               │           ├── GeometricCdp.java
│       │                               │           ├── GeometricCdpConfig.java
│       │                               │           └── GeometricCdpFactory.java
│       │                               └── real/
│       │                                   ├── RealCdp.java
│       │                                   ├── RealCdpConfig.java
│       │                                   ├── RealCdpFactory.java
│       │                                   ├── bound/
│       │                                   │   ├── BoundRealCdp.java
│       │                                   │   ├── BoundRealCdpConfig.java
│       │                                   │   ├── BoundRealCdpFactory.java
│       │                                   │   ├── NaiveBoundRealCdp.java
│       │                                   │   └── NaiveBoundRealCdpConfig.java
│       │                                   └── unbound/
│       │                                       ├── ApacheLaplaceCdp.java
│       │                                       ├── ApacheLaplaceCdpConfig.java
│       │                                       ├── GoogleLaplaceCdp.java
│       │                                       ├── GoogleLaplaceCdpConfig.java
│       │                                       ├── StaircaseCdp.java
│       │                                       ├── StaircaseCdpConfig.java
│       │                                       ├── UnboundRealCdp.java
│       │                                       ├── UnboundRealCdpConfig.java
│       │                                       └── UnboundRealCdpFactory.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── cdp/
│           │                       ├── nominal/
│           │                       │   ├── AbstractNominalCdpTest.java
│           │                       │   ├── Base2ExpCdpTest.java
│           │                       │   └── ExpCdpTest.java
│           │                       └── numeric/
│           │                           ├── integral/
│           │                           │   ├── bound/
│           │                           │   │   ├── AbstractBoundIntegralCdpTest.java
│           │                           │   │   ├── Base2ExpBoundIntegralCdpTest.java
│           │                           │   │   ├── ExpBoundIntegralCdpTest.java
│           │                           │   │   └── NaiveBoundIntegralCdpTest.java
│           │                           │   └── unbound/
│           │                           │       ├── AbstractUnboundIntegralCdpTest.java
│           │                           │       ├── ApacheGeometricCdpTest.java
│           │                           │       └── DiscreteGeometricCdpTest.java
│           │                           └── real/
│           │                               ├── bound/
│           │                               │   ├── AbstractBoundRealCdpTest.java
│           │                               │   └── NaiveBoundRealCdpTest.java
│           │                               └── unbound/
│           │                                   ├── AbstractUnboundRealCdpTest.java
│           │                                   ├── ApacheLaplaceTest.java
│           │                                   ├── GoogleLaplaceTest.java
│           │                                   └── StaircaseCdpTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-ldp/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── ldp/
│       │                           ├── Ldp.java
│       │                           ├── LdpConfig.java
│       │                           ├── nominal/
│       │                           │   ├── NominalLdp.java
│       │                           │   ├── NominalLdpConfig.java
│       │                           │   ├── binary/
│       │                           │   │   ├── BinaryLdp.java
│       │                           │   │   ├── BinaryLdpConfig.java
│       │                           │   │   ├── BinaryLdpFactory.java
│       │                           │   │   ├── RandomResponseLdp.java
│       │                           │   │   └── RandomResponseLdpConfig.java
│       │                           │   └── encode/
│       │                           │       ├── DirectEncodeLdp.java
│       │                           │       ├── DirectEncodeLdpConfig.java
│       │                           │       ├── EncodeLdp.java
│       │                           │       ├── EncodeLdpConfig.java
│       │                           │       └── EncodeLdpFactory.java
│       │                           ├── numeric/
│       │                           │   ├── integral/
│       │                           │   │   ├── AdjExpMapIntegralLdp.java
│       │                           │   │   ├── AdjExpMapIntegralLdpConfig.java
│       │                           │   │   ├── AdjMapIntegralLdp.java
│       │                           │   │   ├── AdjMapIntegralLdpConfig.java
│       │                           │   │   ├── GlobalExpMapIntegralLdp.java
│       │                           │   │   ├── GlobalExpMapIntegralLdpConfig.java
│       │                           │   │   ├── GlobalMapIntegralLdp.java
│       │                           │   │   ├── GlobalMapIntegralLdpConfig.java
│       │                           │   │   ├── IntegralLdp.java
│       │                           │   │   ├── IntegralLdpConfig.java
│       │                           │   │   ├── IntegralLdpFactory.java
│       │                           │   │   ├── LocalExpMapIntegralLdp.java
│       │                           │   │   ├── LocalExpMapIntegralLdpConfig.java
│       │                           │   │   ├── LocalMapIntegralLdp.java
│       │                           │   │   ├── LocalMapIntegralLdpConfig.java
│       │                           │   │   ├── NaiveRangeIntegralLdp.java
│       │                           │   │   └── NaiveRangeIntegralLdpConfig.java
│       │                           │   └── real/
│       │                           │       ├── AdjMapRealLdp.java
│       │                           │       ├── AdjMapRealLdpConfig.java
│       │                           │       ├── GlobalMapRealLdp.java
│       │                           │       ├── GlobalMapRealLdpConfig.java
│       │                           │       ├── LocalMapRealLdp.java
│       │                           │       ├── LocalMapRealLdpConfig.java
│       │                           │       ├── NaiveRangeRealLdp.java
│       │                           │       ├── NaiveRangeRealLdpConfig.java
│       │                           │       ├── RealLdp.java
│       │                           │       ├── RealLdpConfig.java
│       │                           │       └── RealLdpFactory.java
│       │                           └── range/
│       │                               ├── ApacheLaplaceLdp.java
│       │                               ├── ApacheLaplaceLdpConfig.java
│       │                               ├── GoogleLaplaceLdp.java
│       │                               ├── GoogleLaplaceLdpConfig.java
│       │                               ├── HybridLdp.java
│       │                               ├── HybridLdpConfig.java
│       │                               ├── MinimaxLdp.java
│       │                               ├── MinimaxLdpConfig.java
│       │                               ├── PiecewiseLdp.java
│       │                               ├── PiecewiseLdpConfig.java
│       │                               ├── RangeLdp.java
│       │                               ├── RangeLdpConfig.java
│       │                               └── RangeLdpFactory.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── ldp/
│           │                       ├── nominal/
│           │                       │   ├── binary/
│           │                       │   │   ├── AbstractBinaryLdpTest.java
│           │                       │   │   └── RandomResponseLdpTest.java
│           │                       │   └── encode/
│           │                       │       ├── AbstractEncodeLdpTest.java
│           │                       │       └── DirectEncodeLdpTest.java
│           │                       ├── numeric/
│           │                       │   ├── integral/
│           │                       │   │   ├── AbstractIntegralLdpTest.java
│           │                       │   │   ├── AdjExpMapIntegralLdpTest.java
│           │                       │   │   ├── AdjMapIntegralLdpTest.java
│           │                       │   │   ├── GlobalExpMapIntegralLdpTest.java
│           │                       │   │   ├── GlobalMapIntegralLdpTest.java
│           │                       │   │   ├── LocalExpMapIntegralLdpTest.java
│           │                       │   │   ├── LocalMapIntegralLdpTest.java
│           │                       │   │   └── NaiveRangeIntegralLdpTest.java
│           │                       │   └── real/
│           │                       │       ├── AbstractRealLdpTest.java
│           │                       │       ├── AdjMapRealLdpTest.java
│           │                       │       ├── GlobalMapRealLdpTest.java
│           │                       │       ├── LocalMapRealLdpTest.java
│           │                       │       └── NaiveRangeRealLdpTest.java
│           │                       └── range/
│           │                           ├── AbstractRangeLdpTest.java
│           │                           ├── ApacheLaplaceLdpTest.java
│           │                           ├── GoogleLaplaceLdpTest.java
│           │                           ├── HybridLdpTest.java
│           │                           ├── MinimaxLdpTest.java
│           │                           └── PiecewiseLdpTest.java
│           └── resources/
│               └── log4j.properties
├── mpc4j-dp-service/
│   ├── config/
│   │   ├── kosarak.conf
│   │   ├── synthetic_data.conf
│   │   └── synthetic_data_test.conf
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── dp/
│       │                       └── service/
│       │                           ├── fo/
│       │                           │   ├── AbstractFoLdpClient.java
│       │                           │   ├── AbstractFoLdpServer.java
│       │                           │   ├── FoLdpClient.java
│       │                           │   ├── FoLdpFactory.java
│       │                           │   ├── FoLdpServer.java
│       │                           │   ├── cms/
│       │                           │   │   ├── AppleCmsFoLdpClient.java
│       │                           │   │   ├── AppleCmsFoLdpServer.java
│       │                           │   │   ├── AppleHcmsFoLdpClient.java
│       │                           │   │   └── AppleHcmsFoLdpServer.java
│       │                           │   ├── config/
│       │                           │   │   ├── AppleCmsFoLdpConfig.java
│       │                           │   │   ├── AppleHcmsFoLdpConfig.java
│       │                           │   │   ├── BasicFoLdpConfig.java
│       │                           │   │   ├── FlhFoLdpConfig.java
│       │                           │   │   ├── FoLdpConfig.java
│       │                           │   │   ├── OlhFoLdpConfig.java
│       │                           │   │   └── RapporFoLdpConfig.java
│       │                           │   ├── de/
│       │                           │   │   ├── DeIndexFoLdpClient.java
│       │                           │   │   ├── DeIndexFoLdpServer.java
│       │                           │   │   ├── DeStringFoLdpClient.java
│       │                           │   │   └── DeStringFoLdpServer.java
│       │                           │   ├── hadamard/
│       │                           │   │   ├── HmFoLdpClient.java
│       │                           │   │   ├── HmFoLdpServer.java
│       │                           │   │   ├── HmLowEpsFoLdpClient.java
│       │                           │   │   ├── HmLowEpsFoLdpServer.java
│       │                           │   │   ├── HrFoLdpClient.java
│       │                           │   │   ├── HrFoLdpServer.java
│       │                           │   │   ├── HrHighEpsFoLdpClient.java
│       │                           │   │   └── HrHighEpsFoLdpServer.java
│       │                           │   ├── lh/
│       │                           │   │   ├── BlhFoLdpClient.java
│       │                           │   │   ├── BlhFoLdpServer.java
│       │                           │   │   ├── FlhFoLdpClient.java
│       │                           │   │   ├── FlhFoLdpServer.java
│       │                           │   │   ├── OlhFoLdpClient.java
│       │                           │   │   └── OlhFoLdpServer.java
│       │                           │   ├── rappor/
│       │                           │   │   ├── RapporFoLdpClient.java
│       │                           │   │   ├── RapporFoLdpServer.java
│       │                           │   │   └── RapporFoLdpUtils.java
│       │                           │   └── ue/
│       │                           │       ├── OueFoLdpClient.java
│       │                           │       ├── OueFoLdpServer.java
│       │                           │       ├── SueFoLdpClient.java
│       │                           │       └── SueFoLdpServer.java
│       │                           ├── heavyhitter/
│       │                           │   ├── AbstractHhLdpClient.java
│       │                           │   ├── AbstractHhLdpServer.java
│       │                           │   ├── HhLdpClient.java
│       │                           │   ├── HhLdpFactory.java
│       │                           │   ├── HhLdpServer.java
│       │                           │   ├── HhLdpServerState.java
│       │                           │   ├── config/
│       │                           │   │   ├── BaseHhLdpConfig.java
│       │                           │   │   ├── BdrHhgHhLdpConfig.java
│       │                           │   │   ├── BgrHgHhLdpConfig.java
│       │                           │   │   ├── CnrHhgHhLdpConfig.java
│       │                           │   │   ├── DsrHgHhLdpConfig.java
│       │                           │   │   ├── FoHhLdpConfig.java
│       │                           │   │   ├── HgHhLdpConfig.java
│       │                           │   │   ├── HhLdpConfig.java
│       │                           │   │   └── HhgHhLdpConfig.java
│       │                           │   ├── fo/
│       │                           │   │   ├── FoHhLdpClient.java
│       │                           │   │   └── FoHhLdpServer.java
│       │                           │   ├── hg/
│       │                           │   │   ├── BdrHhgHhLdpClient.java
│       │                           │   │   ├── BdrHhgHhLdpServer.java
│       │                           │   │   ├── BgrHgHhLdpClient.java
│       │                           │   │   ├── BgrHgHhLdpServer.java
│       │                           │   │   ├── CnrHhgHhLdpClient.java
│       │                           │   │   ├── CnrHhgHhLdpServer.java
│       │                           │   │   ├── DsrHgHhLdpClient.java
│       │                           │   │   ├── DsrHgHhLdpServer.java
│       │                           │   │   └── HhgHhLdpServer.java
│       │                           │   └── utils/
│       │                           │       ├── EmptyHhLdpServerContext.java
│       │                           │       ├── HgHhLdpServerContext.java
│       │                           │       └── HhLdpServerContext.java
│       │                           ├── main/
│       │                           │   ├── HhLdpAggMetrics.java
│       │                           │   ├── HhLdpMain.java
│       │                           │   ├── HhLdpMetrics.java
│       │                           │   └── LdpServiceMain.java
│       │                           ├── structure/
│       │                           │   ├── HeavyGuardian.java
│       │                           │   ├── NaiveStreamCounter.java
│       │                           │   └── StreamCounter.java
│       │                           └── tool/
│       │                               ├── BucketDomain.java
│       │                               ├── BucketDoubleComparator.java
│       │                               ├── BucketIntegerComparator.java
│       │                               ├── Domain.java
│       │                               ├── FingerprintUtils.java
│       │                               ├── HeavyGuardianUtils.java
│       │                               └── StreamDataUtils.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── dp/
│           │                   └── service/
│           │                       ├── LdpTestDataUtils.java
│           │                       ├── fo/
│           │                       │   ├── FoLdpEfficiencyTest.java
│           │                       │   └── FoLdpTest.java
│           │                       ├── heavyhitter/
│           │                       │   ├── HgHhLdpTest.java
│           │                       │   ├── HhLdpEfficiencyTest.java
│           │                       │   ├── HhLdpTest.java
│           │                       │   └── SingleHgHhLdpTest.java
│           │                       ├── main/
│           │                       │   └── HhLdpMainTest.java
│           │                       ├── structure/
│           │                       │   └── StreamCounterTest.java
│           │                       └── tool/
│           │                           ├── FingerprintUtilsTest.java
│           │                           └── StreamDataUtilsTest.java
│           └── resources/
│               ├── log4j.properties
│               ├── stream_counter_example_data.txt
│               └── test_config/
│                   ├── hh_ldp_test_config_alpha.conf
│                   ├── hh_ldp_test_config_default.conf
│                   ├── hh_ldp_test_config_empty_fo_types.conf
│                   ├── hh_ldp_test_config_empty_hg_types.conf
│                   ├── hh_ldp_test_config_empty_plain.conf
│                   ├── hh_ldp_test_config_empty_report_postfix.conf
│                   ├── hh_ldp_test_config_gammah.conf
│                   ├── hh_ldp_test_config_gammah_no_warmup.conf
│                   ├── hh_ldp_test_config_lambdal.conf
│                   ├── hh_ldp_test_config_no_domain.conf
│                   ├── hh_ldp_test_config_no_gammah.conf
│                   ├── hh_ldp_test_config_no_lambdal.conf
│                   └── hh_ldp_test_config_zero_warmup.conf
├── mpc4j-native-fhe/
│   ├── CMakeLists.txt
│   ├── README.md
│   ├── apsi.cpp
│   ├── apsi.h
│   ├── index_pir.cpp
│   ├── index_pir.h
│   ├── pir/
│   │   ├── edu_alibaba_mpc4j_work_psipir_Lpzl24BatchPirNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_work_psipir_Lpzl24BatchPirNativeUtils.h
│   │   └── std/
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_cw_CwStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_cw_CwStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_fast_FastStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_fast_FastStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_mul_MulStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_mul_MulStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_onion_OnionStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_onion_OnionStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_seal_SealStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_seal_SealStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_vectorized_VectorizedStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_vectorized_VectorizedStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_xpir_XpirStdIdxPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_index_xpir_XpirStdIdxPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_ks_labelpsi_LabelpsiStdKsPirNativeUtils.cpp
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_ks_labelpsi_LabelpsiStdKsPirNativeUtils.h
│   │       ├── edu_alibaba_mpc4j_s2pc_pir_stdpir_kw_pantheon_PantheonStdKwPirNativeUtils.cpp
│   │       └── edu_alibaba_mpc4j_s2pc_pir_stdpir_kw_pantheon_PantheonStdKwPirNativeUtils.h
│   ├── polynomials.cpp
│   ├── polynomials.h
│   ├── random.cpp
│   ├── random.h
│   ├── serialize.cpp
│   ├── serialize.h
│   ├── tfhe/
│   │   ├── params.h
│   │   ├── rns.h
│   │   ├── tfhe.cpp
│   │   ├── tfhe.h
│   │   ├── util.cpp
│   │   └── util.h
│   ├── upso/
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_pdsm_Sj23PdsmUcpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_pdsm_Sj23PdsmUcpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_peqt_Sj23PeqtUcpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_ucpsi_sj23_peqt_Sj23PeqtUcpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsi_cmg21_Cmg21UpsiNativeUtils.cpp
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsi_cmg21_Cmg21UpsiNativeUtils.h
│   │   ├── edu_alibaba_mpc4j_s2pc_upso_upsu_tcl23_Tcl23UpsuNativeUtils.cpp
│   │   └── edu_alibaba_mpc4j_s2pc_upso_upsu_tcl23_Tcl23UpsuNativeUtils.h
│   ├── utils.cpp
│   └── utils.h
├── mpc4j-native-fourq/
│   ├── AMD64/
│   │   ├── consts.c
│   │   ├── fp2_1271.S
│   │   ├── fp2_1271_AVX2.S
│   │   └── fp_x64.h
│   ├── ARM64/
│   │   └── fp_arm64.h
│   ├── CMakeLists.txt
│   ├── FourQ.h
│   ├── FourQ_api.h
│   ├── FourQ_internal.h
│   ├── FourQ_params.h
│   ├── FourQ_tables.h
│   ├── LICENSE.txt
│   ├── README.md
│   ├── crypto_util.c
│   ├── eccp2.c
│   ├── eccp2_core.c
│   ├── eccp2_no_endo.c
│   ├── generic/
│   │   └── fp.h
│   ├── hash_to_curve.c
│   ├── kex.c
│   ├── random/
│   │   ├── random.c
│   │   └── random.h
│   ├── schnorrq.c
│   ├── sha512/
│   │   ├── sha512.c
│   │   └── sha512.h
│   ├── table_lookup.h
│   └── tests/
│       ├── crypto_tests.c
│       ├── ecc_tests.c
│       ├── fp_tests.c
│       ├── test_extras.c
│       └── test_extras.h
├── mpc4j-native-tool/
│   ├── CMakeLists.txt
│   ├── README.md
│   ├── bit_matrix_trans/
│   │   ├── bit_matrix_trans.h
│   │   ├── edu_alibaba_mpc4j_common_tool_bitmatrix_trans_NativeTransBitMatrix.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_bitmatrix_trans_NativeTransBitMatrix.h
│   ├── common/
│   │   ├── block.h
│   │   ├── defines.cpp
│   │   ├── defines.h
│   │   ├── sse2neon.h
│   │   └── stdc++.h
│   ├── crypto/
│   │   ├── aes.h
│   │   ├── blake2/
│   │   │   ├── COPYING
│   │   │   ├── neon/
│   │   │   │   ├── blake2-impl.h
│   │   │   │   ├── blake2.h
│   │   │   │   ├── blake2b-load-neon.h
│   │   │   │   ├── blake2b-neon.c
│   │   │   │   ├── blake2b-round.h
│   │   │   │   ├── blake2bp.c
│   │   │   │   ├── blake2s-load-neon.h
│   │   │   │   ├── blake2s-neon.c
│   │   │   │   ├── blake2s-round.h
│   │   │   │   ├── blake2sp.c
│   │   │   │   ├── blake2xb.c
│   │   │   │   ├── blake2xs.c
│   │   │   │   └── genkat-c.c
│   │   │   └── sse/
│   │   │       ├── blake2-config.h
│   │   │       ├── blake2-impl.h
│   │   │       ├── blake2.c
│   │   │       ├── blake2.h
│   │   │       ├── blake2b-load-sse2.h
│   │   │       ├── blake2b-load-sse41.h
│   │   │       ├── blake2b-round.h
│   │   │       ├── blake2bp.c
│   │   │       └── blake2xb.c
│   │   ├── blake2b_hash.h
│   │   ├── blake2b_kdf.h
│   │   ├── blake3/
│   │   │   ├── blake3.c
│   │   │   ├── blake3.h
│   │   │   ├── blake3_avx2_x86-64_unix.S
│   │   │   ├── blake3_avx512_x86-64_unix.S
│   │   │   ├── blake3_dispatch.c
│   │   │   ├── blake3_impl.h
│   │   │   ├── blake3_neon.c
│   │   │   ├── blake3_portable.c
│   │   │   ├── blake3_sse2_x86-64_unix.S
│   │   │   └── blake3_sse41_x86-64_unix.S
│   │   ├── blake3_hash.h
│   │   ├── blake3_kdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake2b160Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake2b160Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake3Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeBlake3Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeSha256Hash.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_hash_NativeSha256Hash.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake2bKdf.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake2bKdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake3Kdf.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_kdf_NativeBlake3Kdf.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_prp_NativeAesPrp.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_prp_NativeAesPrp.h
│   │   └── sha256_hash.h
│   ├── doc/
│   │   ├── compile_centos_x86_64.md
│   │   ├── compile_mac_aarch64.md
│   │   ├── compile_mac_x86_64.md
│   │   └── compile_ubuntu.md
│   ├── ecc_fourq/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_fourq_FourqByteFullEcc.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_crypto_ecc_fourq_FourqByteFullEcc.h
│   ├── ecc_openssl/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256k1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256k1OpensslNativeEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256r1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_SecP256r1OpensslNativeEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_Sm2P256v1OpensslNativeEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_openssl_Sm2P256v1OpensslNativeEcc.h
│   │   ├── openssl_bit_iterator.hpp
│   │   ├── openssl_ecc.cpp
│   │   ├── openssl_ecc.h
│   │   └── openssl_window_method.hpp
│   ├── ecc_sodium/
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_Ed25519SodiumByteFullEcc.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_Ed25519SodiumByteFullEcc.h
│   │   ├── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_X25519SodiumByteMulEcc.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_crypto_ecc_sodium_X25519SodiumByteMulEcc.h
│   ├── gf2e/
│   │   ├── edu_alibaba_mpc4j_common_tool_galoisfield_gf2e_NtlNativeGf2e.cpp
│   │   └── edu_alibaba_mpc4j_common_tool_galoisfield_gf2e_NtlNativeGf2e.h
│   ├── network/
│   │   ├── benes_network.hpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_benes_NativeBenesNetwork.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_benes_NativeBenesNetwork.h
│   │   ├── edu_alibaba_mpc4j_common_tool_network_waksman_NativeWaksmanNetwork.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_network_waksman_NativeWaksmanNetwork.h
│   │   └── waksman_network.hpp
│   ├── ntl_poly/
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_gf2e_NtlNativeGf2ePoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_gf2e_NtlNativeGf2ePoly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp64_NtlZp64Poly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp64_NtlZp64Poly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlTreeZpPoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlTreeZpPoly.h
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlZpPoly.cpp
│   │   ├── edu_alibaba_mpc4j_common_tool_polynomial_zp_NtlZpPoly.h
│   │   ├── ntl_gf2x.cpp
│   │   ├── ntl_gf2x.h
│   │   ├── ntl_tree_zp.cpp
│   │   ├── ntl_tree_zp.h
│   │   ├── ntl_zp.cpp
│   │   ├── ntl_zp.h
│   │   ├── ntl_zp64.cpp
│   │   ├── ntl_zp64.h
│   │   ├── ntl_zp_util.cpp
│   │   └── ntl_zp_util.h
│   └── ntl_sgf2k/
│       ├── edu_alibaba_mpc4j_common_tool_galoisfield_sgf2k_NtlSubSgf2k.cpp
│       ├── edu_alibaba_mpc4j_common_tool_galoisfield_sgf2k_NtlSubSgf2k.h
│       ├── ntl_sgf2k_utils.cpp
│       └── ntl_sgf2k_utils.h
├── mpc4j-s2pc-aby/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── s2pc/
│       │                       └── aby/
│       │                           ├── basics/
│       │                           │   ├── z2/
│       │                           │   │   ├── AbstractZ2cParty.java
│       │                           │   │   ├── SquareZ2Vector.java
│       │                           │   │   ├── Z2cConfig.java
│       │                           │   │   ├── Z2cFactory.java
│       │                           │   │   ├── Z2cParty.java
│       │                           │   │   ├── bea91/
│       │                           │   │   │   ├── Bea91Z2cConfig.java
│       │                           │   │   │   ├── Bea91Z2cPtoDesc.java
│       │                           │   │   │   ├── Bea91Z2cReceiver.java
│       │                           │   │   │   └── Bea91Z2cSender.java
│       │                           │   │   └── rrg21/
│       │                           │   │       ├── Rrg21Z2cConfig.java
│       │                           │   │       ├── Rrg21Z2cPtoDesc.java
│       │                           │   │       ├── Rrg21Z2cReceiver.java
│       │                           │   │       └── Rrg21Z2cSender.java
│       │                           │   ├── zl/
│       │                           │   │   ├── AbstractZlcParty.java
│       │                           │   │   ├── SquareZlVector.java
│       │                           │   │   ├── ZlcConfig.java
│       │                           │   │   ├── ZlcFactory.java
│       │                           │   │   ├── ZlcParty.java
│       │                           │   │   └── bea91/
│       │                           │   │       ├── Bea91ZlcConfig.java
│       │                           │   │       ├── Bea91ZlcPtoDesc.java
│       │                           │   │       ├── Bea91ZlcReceiver.java
│       │                           │   │       └── Bea91ZlcSender.java
│       │                           │   └── zl64/
│       │                           │       ├── AbstractZl64cParty.java
│       │                           │       ├── SquareZl64Vector.java
│       │                           │       ├── Zl64cConfig.java
│       │                           │       ├── Zl64cFactory.java
│       │                           │       ├── Zl64cParty.java
│       │                           │       └── bea91/
│       │                           │           ├── Bea91Zl64cConfig.java
│       │                           │           ├── Bea91Zl64cPtoDesc.java
│       │                           │           ├── Bea91Zl64cReceiver.java
│       │                           │           └── Bea91Zl64cSender.java
│       │                           ├── edit/
│       │                           │   ├── AbstractEditDistReceiver.java
│       │                           │   ├── AbstractEditDistSender.java
│       │                           │   ├── DistCmpConfig.java
│       │                           │   ├── DistCmpReceiver.java
│       │                           │   ├── DistCmpSender.java
│       │                           │   ├── EditDistFactory.java
│       │                           │   ├── EditUtils.java
│       │                           │   └── s2pc/
│       │                           │       └── diag/
│       │                           │           ├── S2pcDiagEditDistConfig.java
│       │                           │           ├── S2pcDiagEditDistPtoDesc.java
│       │                           │           ├── S2pcDiagEditDistReceiver.java
│       │                           │           └── S2pcDiagEditDistSender.java
│       │                           ├── main/
│       │                           │   ├── AbyMain.java
│       │                           │   └── osn/
│       │                           │       ├── RosnConfigUtils.java
│       │                           │       └── RosnMain.java
│       │                           ├── operator/
│       │                           │   ├── agg/
│       │                           │   │   ├── hamming/
│       │                           │   │   │   ├── AbstractHammingParty.java
│       │                           │   │   │   ├── HammingConfig.java
│       │                           │   │   │   ├── HammingFactory.java
│       │                           │   │   │   ├── HammingParty.java
│       │                           │   │   │   └── bcp13/
│       │                           │   │   │       ├── Bcp13ShHammingConfig.java
│       │                           │   │   │       ├── Bcp13ShHammingPtoDesc.java
│       │                           │   │   │       ├── Bcp13ShHammingReceiver.java
│       │                           │   │   │       └── Bcp13ShHammingSender.java
│       │                           │   │   └── max/
│       │                           │   │       └── zl/
│       │                           │   │           ├── AbstractZlMaxParty.java
│       │                           │   │           ├── ZlMaxConfig.java
│       │                           │   │           ├── ZlMaxFactory.java
│       │                           │   │           ├── ZlMaxParty.java
│       │                           │   │           └── rrk20/
│       │                           │   │               ├── Rrk20ZlMaxConfig.java
│       │                           │   │               ├── Rrk20ZlMaxPtoDesc.java
│       │                           │   │               ├── Rrk20ZlMaxReceiver.java
│       │                           │   │               └── Rrk20ZlMaxSender.java
│       │                           │   ├── corr/
│       │                           │   │   └── zl/
│       │                           │   │       ├── AbstractZlCorrParty.java
│       │                           │   │       ├── ZlCorrConfig.java
│       │                           │   │       ├── ZlCorrFactory.java
│       │                           │   │       ├── ZlCorrParty.java
│       │                           │   │       ├── gp23/
│       │                           │   │       │   ├── Gp23ZlCorrConfig.java
│       │                           │   │       │   ├── Gp23ZlCorrPtoDesc.java
│       │                           │   │       │   ├── Gp23ZlCorrReceiver.java
│       │                           │   │       │   └── Gp23ZlCorrSender.java
│       │                           │   │       └── rrk20/
│       │                           │   │           ├── Rrk20ZlCorrConfig.java
│       │                           │   │           ├── Rrk20ZlCorrPtoDesc.java
│       │                           │   │           ├── Rrk20ZlCorrReceiver.java
│       │                           │   │           └── Rrk20ZlCorrSender.java
│       │                           │   └── row/
│       │                           │       ├── b2a/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlB2aParty.java
│       │                           │       │       ├── ZlB2aConfig.java
│       │                           │       │       ├── ZlB2aFactory.java
│       │                           │       │       ├── ZlB2aParty.java
│       │                           │       │       └── rrkc20/
│       │                           │       │           ├── Rrkc20ZlB2aConfig.java
│       │                           │       │           ├── Rrkc20ZlB2aPtoDesc.java
│       │                           │       │           ├── Rrkc20ZlB2aReceiver.java
│       │                           │       │           └── Rrkc20ZlB2aSender.java
│       │                           │       ├── crossTerm/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlCrossTermReceiver.java
│       │                           │       │       ├── AbstractZlCrossTermSender.java
│       │                           │       │       ├── ZlCrossTermConfig.java
│       │                           │       │       ├── ZlCrossTermFactory.java
│       │                           │       │       ├── ZlCrossTermParty.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlCrossTermConfig.java
│       │                           │       │           ├── Rrgg21ZlCrossTermPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlCrossTermReceiver.java
│       │                           │       │           └── Rrgg21ZlCrossTermSender.java
│       │                           │       ├── drelu/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlDreluParty.java
│       │                           │       │       ├── ZlDreluConfig.java
│       │                           │       │       ├── ZlDreluFactory.java
│       │                           │       │       ├── ZlDreluParty.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlDreluConfig.java
│       │                           │       │           ├── Rrk20ZlDreluPtoDesc.java
│       │                           │       │           ├── Rrk20ZlDreluReceiver.java
│       │                           │       │           └── Rrk20ZlDreluSender.java
│       │                           │       ├── extension/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlExtensionParty.java
│       │                           │       │       ├── ZlExtensionConfig.java
│       │                           │       │       ├── ZlExtensionFactory.java
│       │                           │       │       ├── ZlExtensionParty.java
│       │                           │       │       ├── g24/
│       │                           │       │       │   ├── G24ZlExtensionConfig.java
│       │                           │       │       │   ├── G24ZlExtensionPtoDesc.java
│       │                           │       │       │   ├── G24ZlExtensionReceiver.java
│       │                           │       │       │   └── G24ZlExtensionSender.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlExtensionConfig.java
│       │                           │       │           ├── Rrgg21ZlExtensionPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlExtensionReceiver.java
│       │                           │       │           └── Rrgg21ZlExtensionSender.java
│       │                           │       ├── lut/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlLutReceiver.java
│       │                           │       │       ├── AbstractZlLutSender.java
│       │                           │       │       ├── ZlLutConfig.java
│       │                           │       │       ├── ZlLutFactory.java
│       │                           │       │       ├── ZlLutReceiver.java
│       │                           │       │       ├── ZlLutSender.java
│       │                           │       │       └── rrgg21/
│       │                           │       │           ├── Rrgg21ZlLutConfig.java
│       │                           │       │           ├── Rrgg21ZlLutPtoDesc.java
│       │                           │       │           ├── Rrgg21ZlLutReceiver.java
│       │                           │       │           └── Rrgg21ZlLutSender.java
│       │                           │       ├── matCrossTerm/
│       │                           │       │   ├── AbstractZlMatCrossTermReceiver.java
│       │                           │       │   ├── AbstractZlMatCrossTermSender.java
│       │                           │       │   ├── ZlMatCrossTermConfig.java
│       │                           │       │   ├── ZlMatCrossTermFactory.java
│       │                           │       │   ├── ZlMatCrossTermParty.java
│       │                           │       │   └── rrgg21/
│       │                           │       │       ├── Rrgg21ZlMatCrossTermConfig.java
│       │                           │       │       ├── Rrgg21ZlMatCrossTermPtoDesc.java
│       │                           │       │       ├── Rrgg21ZlMatCrossTermReceiver.java
│       │                           │       │       └── Rrgg21ZlMatCrossTermSender.java
│       │                           │       ├── max2/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMax2Party.java
│       │                           │       │       ├── ZlMax2Config.java
│       │                           │       │       ├── ZlMax2Factory.java
│       │                           │       │       ├── ZlMax2Party.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMax2Config.java
│       │                           │       │           ├── Rrk20ZlMax2PtoDesc.java
│       │                           │       │           ├── Rrk20ZlMax2Receiver.java
│       │                           │       │           └── Rrk20ZlMax2Sender.java
│       │                           │       ├── millionaire/
│       │                           │       │   ├── AbstractMillionaireParty.java
│       │                           │       │   ├── MillionaireConfig.java
│       │                           │       │   ├── MillionaireFactory.java
│       │                           │       │   ├── MillionaireParty.java
│       │                           │       │   └── rrk20/
│       │                           │       │       ├── Rrk20MillionaireConfig.java
│       │                           │       │       ├── Rrk20MillionairePtoDesc.java
│       │                           │       │       ├── Rrk20MillionaireReceiver.java
│       │                           │       │       ├── Rrk20MillionaireSender.java
│       │                           │       │       └── Rrk20MillionaireUtils.java
│       │                           │       ├── min2/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMin2Party.java
│       │                           │       │       ├── ZlMin2Config.java
│       │                           │       │       ├── ZlMin2Factory.java
│       │                           │       │       ├── ZlMin2Party.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMin2Config.java
│       │                           │       │           ├── Rrk20ZlMin2PtoDesc.java
│       │                           │       │           ├── Rrk20ZlMin2Receiver.java
│       │                           │       │           └── Rrk20ZlMin2Sender.java
│       │                           │       ├── mux/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlMuxParty.java
│       │                           │       │       ├── ZlMuxConfig.java
│       │                           │       │       ├── ZlMuxFactory.java
│       │                           │       │       ├── ZlMuxParty.java
│       │                           │       │       ├── rrg21/
│       │                           │       │       │   ├── Rrg21ZlMuxConfig.java
│       │                           │       │       │   ├── Rrg21ZlMuxPtoDesc.java
│       │                           │       │       │   ├── Rrg21ZlMuxReceiver.java
│       │                           │       │       │   └── Rrg21ZlMuxSender.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlMuxConfig.java
│       │                           │       │           ├── Rrk20ZlMuxPtoDesc.java
│       │                           │       │           ├── Rrk20ZlMuxReceiver.java
│       │                           │       │           └── Rrk20ZlMuxSender.java
│       │                           │       ├── peqt/
│       │                           │       │   ├── AbstractPeqtParty.java
│       │                           │       │   ├── PeqtConfig.java
│       │                           │       │   ├── PeqtFactory.java
│       │                           │       │   ├── PeqtParty.java
│       │                           │       │   ├── cgs22/
│       │                           │       │   │   ├── Cgs22PeqtConfig.java
│       │                           │       │   │   ├── Cgs22PeqtPtoDesc.java
│       │                           │       │   │   ├── Cgs22PeqtReceiver.java
│       │                           │       │   │   ├── Cgs22PeqtSender.java
│       │                           │       │   │   └── Cgs22PeqtUtils.java
│       │                           │       │   └── naive/
│       │                           │       │       ├── NaivePeqtConfig.java
│       │                           │       │       ├── NaivePeqtPtoDesc.java
│       │                           │       │       ├── NaivePeqtReceiver.java
│       │                           │       │       └── NaivePeqtSender.java
│       │                           │       ├── trunc/
│       │                           │       │   └── zl/
│       │                           │       │       ├── AbstractZlTruncParty.java
│       │                           │       │       ├── ZlTruncConfig.java
│       │                           │       │       ├── ZlTruncFactory.java
│       │                           │       │       ├── ZlTruncParty.java
│       │                           │       │       ├── gp23/
│       │                           │       │       │   ├── Gp23ZlTruncConfig.java
│       │                           │       │       │   ├── Gp23ZlTruncPtoDesc.java
│       │                           │       │       │   ├── Gp23ZlTruncReceiver.java
│       │                           │       │       │   └── Gp23ZlTruncSender.java
│       │                           │       │       └── rrk20/
│       │                           │       │           ├── Rrk20ZlTruncConfig.java
│       │                           │       │           ├── Rrk20ZlTruncPtoDesc.java
│       │                           │       │           ├── Rrk20ZlTruncReceiver.java
│       │                           │       │           └── Rrk20ZlTruncSender.java
│       │                           │       └── wrap/
│       │                           │           └── zl/
│       │                           │               ├── AbstractZlWrapParty.java
│       │                           │               ├── ZlWrapConfig.java
│       │                           │               ├── ZlWrapFactory.java
│       │                           │               ├── ZlWrapParty.java
│       │                           │               └── rrkc20/
│       │                           │                   ├── Rrkc20ZlWrapConfig.java
│       │                           │                   ├── Rrkc20ZlWrapPtoDesc.java
│       │                           │                   ├── Rrkc20ZlWrapReceiver.java
│       │                           │                   └── Rrkc20ZlWrapSender.java
│       │                           └── pcg/
│       │                               ├── TrustDealer.java
│       │                               ├── TrustDealerConfig.java
│       │                               ├── TrustDealerPtoDesc.java
│       │                               ├── TrustDealerPtoStep.java
│       │                               ├── TrustDealerThread.java
│       │                               ├── dabit/
│       │                               │   ├── ZlDaBitTuple.java
│       │                               │   └── zl/
│       │                               │       ├── AbstractZlDaBitGenParty.java
│       │                               │       ├── ZlDaBitGenConfig.java
│       │                               │       ├── ZlDaBitGenFactory.java
│       │                               │       ├── ZlDaBitGenParty.java
│       │                               │       ├── lkz24/
│       │                               │       │   ├── Lkz24ZlDaBitGenConfig.java
│       │                               │       │   ├── Lkz24ZlDaBitGenPtoDesc.java
│       │                               │       │   ├── Lzk24ZlDaBitGenReceiver.java
│       │                               │       │   └── Lzk24ZlDaBitGenSender.java
│       │                               │       └── plg24/
│       │                               │           ├── Plg24ZlDaBitGenConfig.java
│       │                               │           ├── Plg24ZlDaBitGenPtoDesc.java
│       │                               │           ├── Plg24ZlDaBitGenReceiver.java
│       │                               │           └── Plg24ZlDaBitGenSender.java
│       │                               ├── osn/
│       │                               │   ├── dosn/
│       │                               │   │   ├── AbstractDosnReceiver.java
│       │                               │   │   ├── AbstractDosnSender.java
│       │                               │   │   ├── DosnConfig.java
│       │                               │   │   ├── DosnFactory.java
│       │                               │   │   ├── DosnPartyOutput.java
│       │                               │   │   ├── DosnReceiver.java
│       │                               │   │   ├── DosnSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24DosnConfig.java
│       │                               │   │       ├── Lll24DosnPtoDesc.java
│       │                               │   │       ├── Lll24DosnReceiver.java
│       │                               │   │       └── Lll24DosnSender.java
│       │                               │   ├── posn/
│       │                               │   │   ├── AbstractPosnReceiver.java
│       │                               │   │   ├── AbstractPosnSender.java
│       │                               │   │   ├── PosnConfig.java
│       │                               │   │   ├── PosnFactory.java
│       │                               │   │   ├── PosnReceiver.java
│       │                               │   │   ├── PosnSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24PosnConfig.java
│       │                               │   │       ├── Lll24PosnPtoDesc.java
│       │                               │   │       ├── Lll24PosnReceiver.java
│       │                               │   │       └── Lll24PosnSender.java
│       │                               │   └── rosn/
│       │                               │       ├── AbstractCstRosnReceiver.java
│       │                               │       ├── AbstractCstRosnSender.java
│       │                               │       ├── AbstractNetRosnReceiver.java
│       │                               │       ├── AbstractNetRosnSender.java
│       │                               │       ├── AbstractRosnReceiver.java
│       │                               │       ├── AbstractRosnSender.java
│       │                               │       ├── CstRosnConfig.java
│       │                               │       ├── CstRosnPtoStep.java
│       │                               │       ├── CstRosnReceiver.java
│       │                               │       ├── CstRosnSender.java
│       │                               │       ├── NetRosnConfig.java
│       │                               │       ├── RosnConfig.java
│       │                               │       ├── RosnFactory.java
│       │                               │       ├── RosnReceiver.java
│       │                               │       ├── RosnReceiverOutput.java
│       │                               │       ├── RosnSender.java
│       │                               │       ├── RosnSenderOutput.java
│       │                               │       ├── cgp20/
│       │                               │       │   ├── Cgp20CstRosnConfig.java
│       │                               │       │   ├── Cgp20CstRosnPtoDesc.java
│       │                               │       │   ├── Cgp20CstRosnReceiver.java
│       │                               │       │   └── Cgp20CstRosnSender.java
│       │                               │       ├── gmr21/
│       │                               │       │   ├── Gmr21FlatNetRosnConfig.java
│       │                               │       │   ├── Gmr21FlatNetRosnPtoDesc.java
│       │                               │       │   ├── Gmr21FlatNetRosnReceiver.java
│       │                               │       │   ├── Gmr21FlatNetRosnSender.java
│       │                               │       │   ├── Gmr21NetRosnConfig.java
│       │                               │       │   ├── Gmr21NetRosnPtoDesc.java
│       │                               │       │   ├── Gmr21NetRosnReceiver.java
│       │                               │       │   └── Gmr21NetRosnSender.java
│       │                               │       ├── lll24/
│       │                               │       │   ├── Lll24CstRosnConfig.java
│       │                               │       │   ├── Lll24CstRosnPtoDesc.java
│       │                               │       │   ├── Lll24CstRosnReceiver.java
│       │                               │       │   ├── Lll24CstRosnSender.java
│       │                               │       │   ├── Lll24FlatNetRosnConfig.java
│       │                               │       │   ├── Lll24FlatNetRosnPtoDesc.java
│       │                               │       │   ├── Lll24FlatNetRosnReceiver.java
│       │                               │       │   ├── Lll24FlatNetRosnSender.java
│       │                               │       │   ├── Lll24NetRosnConfig.java
│       │                               │       │   ├── Lll24NetRosnPtoDesc.java
│       │                               │       │   ├── Lll24NetRosnReceiver.java
│       │                               │       │   └── Lll24NetRosnSender.java
│       │                               │       ├── ms13/
│       │                               │       │   ├── Ms13NetRosnConfig.java
│       │                               │       │   ├── Ms13NetRosnPtoDesc.java
│       │                               │       │   ├── Ms13NetRosnReceiver.java
│       │                               │       │   └── Ms13NetRosnSender.java
│       │                               │       └── prrs24/
│       │                               │           ├── Prrs24OprfRosnConfig.java
│       │                               │           ├── Prrs24OprfRosnPtoDesc.java
│       │                               │           ├── Prrs24OprfRosnReceiver.java
│       │                               │           └── Prrs24OprfRosnSender.java
│       │                               ├── sowoprf/
│       │                               │   ├── AbstractF23SowOprfReceiver.java
│       │                               │   ├── AbstractF23SowOprfSender.java
│       │                               │   ├── AbstractF32SowOprfReceiver.java
│       │                               │   ├── AbstractF32SowOprfSender.java
│       │                               │   ├── F23SowOprfConfig.java
│       │                               │   ├── F23SowOprfFactory.java
│       │                               │   ├── F23SowOprfReceiver.java
│       │                               │   ├── F23SowOprfSender.java
│       │                               │   ├── F23Wprf.java
│       │                               │   ├── F23WprfByteMatrix.java
│       │                               │   ├── F23WprfLongMatrix.java
│       │                               │   ├── F23WprfMatrix.java
│       │                               │   ├── F23WprfMatrixFactory.java
│       │                               │   ├── F23WprfNaiveMatrix.java
│       │                               │   ├── F32SowOprfConfig.java
│       │                               │   ├── F32SowOprfFactory.java
│       │                               │   ├── F32SowOprfReceiver.java
│       │                               │   ├── F32SowOprfSender.java
│       │                               │   ├── F32Wprf.java
│       │                               │   ├── F32WprfByteMatrix.java
│       │                               │   ├── F32WprfLongMatrix.java
│       │                               │   ├── F32WprfMatrix.java
│       │                               │   ├── F32WprfMatrixFactory.java
│       │                               │   ├── F32WprfNaiveMatrix.java
│       │                               │   └── aprr24/
│       │                               │       ├── Aprr24F23SowOprfConfig.java
│       │                               │       ├── Aprr24F23SowOprfPtoDesc.java
│       │                               │       ├── Aprr24F23SowOprfReceiver.java
│       │                               │       ├── Aprr24F23SowOprfSender.java
│       │                               │       ├── Aprr24F32SowOprfConfig.java
│       │                               │       ├── Aprr24F32SowOprfPtoDesc.java
│       │                               │       ├── Aprr24F32SowOprfReceiver.java
│       │                               │       └── Aprr24F32SowOprfSender.java
│       │                               ├── st/
│       │                               │   ├── bst/
│       │                               │   │   ├── AbstractBstReceiver.java
│       │                               │   │   ├── AbstractBstSender.java
│       │                               │   │   ├── BstConfig.java
│       │                               │   │   ├── BstFactory.java
│       │                               │   │   ├── BstReceiver.java
│       │                               │   │   ├── BstReceiverOutput.java
│       │                               │   │   ├── BstSender.java
│       │                               │   │   ├── BstSenderOutput.java
│       │                               │   │   ├── cgp20/
│       │                               │   │   │   ├── Cgp20BstConfig.java
│       │                               │   │   │   ├── Cgp20BstPtoDesc.java
│       │                               │   │   │   ├── Cgp20BstReceiver.java
│       │                               │   │   │   └── Cgp20BstSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24BstConfig.java
│       │                               │   │       ├── Lll24BstPtoDesc.java
│       │                               │   │       ├── Lll24BstReceiver.java
│       │                               │   │       └── Lll24BstSender.java
│       │                               │   ├── pst/
│       │                               │   │   ├── AbstractPstReceiver.java
│       │                               │   │   ├── AbstractPstSender.java
│       │                               │   │   ├── PstConfig.java
│       │                               │   │   ├── PstFactory.java
│       │                               │   │   ├── PstReceiver.java
│       │                               │   │   ├── PstSender.java
│       │                               │   │   ├── cgp20/
│       │                               │   │   │   ├── Cgp20PstConfig.java
│       │                               │   │   │   ├── Cgp20PstPtoDesc.java
│       │                               │   │   │   ├── Cgp20PstReceiver.java
│       │                               │   │   │   └── Cgp20PstSender.java
│       │                               │   │   └── lll24/
│       │                               │   │       ├── Lll24PstConfig.java
│       │                               │   │       ├── Lll24PstPtoDesc.java
│       │                               │   │       ├── Lll24PstReceiver.java
│       │                               │   │       └── Lll24PstSender.java
│       │                               │   └── sst/
│       │                               │       ├── AbstractSstReceiver.java
│       │                               │       ├── AbstractSstSender.java
│       │                               │       ├── SstConfig.java
│       │                               │       ├── SstFactory.java
│       │                               │       ├── SstReceiver.java
│       │                               │       ├── SstReceiverOutput.java
│       │                               │       ├── SstSender.java
│       │                               │       ├── SstSenderOutput.java
│       │                               │       ├── cgp20/
│       │                               │       │   ├── Cgp20SstConfig.java
│       │                               │       │   ├── Cgp20SstPtoDesc.java
│       │                               │       │   ├── Cgp20SstReceiver.java
│       │                               │       │   └── Cgp20SstSender.java
│       │                               │       └── lll24/
│       │                               │           ├── Lll24SstConfig.java
│       │                               │           ├── Lll24SstPtoDesc.java
│       │                               │           ├── Lll24SstReceiver.java
│       │                               │           └── Lll24SstSender.java
│       │                               └── triple/
│       │                                   ├── Z2Triple.java
│       │                                   ├── Zl64Triple.java
│       │                                   ├── ZlTriple.java
│       │                                   ├── Zp64Triple.java
│       │                                   ├── z2/
│       │                                   │   ├── AbstractZ2TripleGenParty.java
│       │                                   │   ├── Z2TripleGenConfig.java
│       │                                   │   ├── Z2TripleGenFactory.java
│       │                                   │   ├── Z2TripleGenParty.java
│       │                                   │   ├── aided/
│       │                                   │   │   ├── AidedZ2TripleGenConfig.java
│       │                                   │   │   └── AidedZ2TripleGenParty.java
│       │                                   │   ├── direct/
│       │                                   │   │   ├── DirectZ2TripleGenConfig.java
│       │                                   │   │   ├── DirectZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── DirectZ2TripleGenReceiver.java
│       │                                   │   │   └── DirectZ2TripleGenSender.java
│       │                                   │   ├── fake/
│       │                                   │   │   ├── FakeZ2TripleGenConfig.java
│       │                                   │   │   ├── FakeZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── FakeZ2TripleGenReceiver.java
│       │                                   │   │   └── FakeZ2TripleGenSender.java
│       │                                   │   ├── lcot/
│       │                                   │   │   ├── LcotZ2TripleGenConfig.java
│       │                                   │   │   ├── LcotZ2TripleGenPtoDesc.java
│       │                                   │   │   ├── LcotZ2TripleGenReceiver.java
│       │                                   │   │   └── LcotZ2TripleGenSender.java
│       │                                   │   └── silent/
│       │                                   │       ├── SilentZ2TripleGenConfig.java
│       │                                   │       ├── SilentZ2TripleGenPtoDesc.java
│       │                                   │       ├── SilentZ2TripleGenReceiver.java
│       │                                   │       └── SilentZ2TripleGenSender.java
│       │                                   ├── zl/
│       │                                   │   ├── AbstractZlTripleGenParty.java
│       │                                   │   ├── ZlTripleGenConfig.java
│       │                                   │   ├── ZlTripleGenFactory.java
│       │                                   │   ├── ZlTripleGenParty.java
│       │                                   │   ├── aided/
│       │                                   │   │   ├── AidedZlTripleGenConfig.java
│       │                                   │   │   └── AidedZlTripleGenParty.java
│       │                                   │   ├── direct/
│       │                                   │   │   ├── DirectZlTripleGenConfig.java
│       │                                   │   │   ├── DirectZlTripleGenPtoDesc.java
│       │                                   │   │   ├── DirectZlTripleGenReceiver.java
│       │                                   │   │   └── DirectZlTripleGenSender.java
│       │                                   │   ├── fake/
│       │                                   │   │   ├── FakeZlTripleGenConfig.java
│       │                                   │   │   ├── FakeZlTripleGenPtoDesc.java
│       │                                   │   │   ├── FakeZlTripleGenReceiver.java
│       │                                   │   │   └── FakeZlTripleGenSender.java
│       │                                   │   └── silent/
│       │                                   │       ├── SilentZlTripleGenConfig.java
│       │                                   │       ├── SilentZlTripleGenPtoDesc.java
│       │                                   │       ├── SilentZlTripleGenReceiver.java
│       │                                   │       └── SilentZlTripleGenSender.java
│       │                                   └── zl64/
│       │                                       ├── AbstractZl64TripleGenParty.java
│       │                                       ├── Zl64TripleGenConfig.java
│       │                                       ├── Zl64TripleGenFactory.java
│       │                                       ├── Zl64TripleGenParty.java
│       │                                       ├── aided/
│       │                                       │   ├── AidedZl64TripleGenConfig.java
│       │                                       │   └── AidedZl64TripleGenParty.java
│       │                                       ├── direct/
│       │                                       │   ├── DirectZl64TripleGenConfig.java
│       │                                       │   ├── DirectZl64TripleGenPtoDesc.java
│       │                                       │   ├── DirectZl64TripleGenReceiver.java
│       │                                       │   └── DirectZl64TripleGenSender.java
│       │                                       ├── fake/
│       │                                       │   ├── FakeZl64TripleGenConfig.java
│       │                                       │   ├── FakeZl64TripleGenPtoDesc.java
│       │                                       │   ├── FakeZl64TripleGenReceiver.java
│       │                                       │   └── FakeZl64TripleGenSender.java
│       │                                       └── silent/
│       │                                           ├── SilentZl64TripleGenConfig.java
│       │                                           ├── SilentZl64TripleGenPtoDesc.java
│       │                                           ├── SilentZl64TripleGenReceiver.java
│       │                                           └── SilentZl64TripleGenSender.java
│       └── test/
│           ├── java/
│           │   └── edu/
│           │       └── alibaba/
│           │           └── mpc4j/
│           │               └── s2pc/
│           │                   └── aby/
│           │                       ├── basics/
│           │                       │   ├── z2/
│           │                       │   │   ├── BatchDyadicZ2cReceiverThread.java
│           │                       │   │   ├── BatchDyadicZ2cSenderThread.java
│           │                       │   │   ├── BatchUnaryZ2cReceiverThread.java
│           │                       │   │   ├── BatchUnaryZ2cSenderThread.java
│           │                       │   │   ├── BatchZ2cTest.java
│           │                       │   │   ├── SingleDyadicZ2cReceiverThread.java
│           │                       │   │   ├── SingleDyadicZ2cSenderThread.java
│           │                       │   │   ├── SingleUnaryZ2cReceiverThread.java
│           │                       │   │   ├── SingleUnaryZ2cSenderThread.java
│           │                       │   │   ├── SingleZ2cTest.java
│           │                       │   │   ├── UnbalancedAndZ2cReceiverThread.java
│           │                       │   │   ├── UnbalancedAndZ2cSenderThread.java
│           │                       │   │   └── Z2cUnbalancedAndTest.java
│           │                       │   ├── zl/
│           │                       │   │   ├── BatchDyadicZlcReceiverThread.java
│           │                       │   │   ├── BatchDyadicZlcSenderThread.java
│           │                       │   │   ├── BatchUnaryZlcReceiverThread.java
│           │                       │   │   ├── BatchUnaryZlcSenderThread.java
│           │                       │   │   ├── BatchZlcTest.java
│           │                       │   │   ├── SingleDyadicZlcReceiverThread.java
│           │                       │   │   ├── SingleDyadicZlcSenderThread.java
│           │                       │   │   ├── SingleUnaryZlcReceiverThread.java
│           │                       │   │   ├── SingleUnaryZlcSenderThread.java
│           │                       │   │   └── SingleZlcTest.java
│           │                       │   └── zl64/
│           │                       │       ├── BatchDyadicZl64cReceiverThread.java
│           │                       │       ├── BatchDyadicZl64cSenderThread.java
│           │                       │       ├── BatchUnaryZl64cReceiverThread.java
│           │                       │       ├── BatchUnaryZl64cSenderThread.java
│           │                       │       ├── BatchZl64cTest.java
│           │                       │       ├── SingleDyadicZl64cReceiverThread.java
│           │                       │       ├── SingleDyadicZl64cSenderThread.java
│           │                       │       ├── SingleUnaryZl64cReceiverThread.java
│           │                       │       ├── SingleUnaryZl64cSenderThread.java
│           │                       │       └── SingleZl64cTest.java
│           │                       ├── edit/
│           │                       │   ├── EditDistEfficiencyTest.java
│           │                       │   ├── EditDistReceiverThread.java
│           │                       │   ├── EditDistSenderThread.java
│           │                       │   └── EditDistTest.java
│           │                       ├── main/
│           │                       │   └── RosnMainTest.java
│           │                       ├── operator/
│           │                       │   ├── agg/
│           │                       │   │   ├── hamming/
│           │                       │   │   │   ├── HammingReceiverThread.java
│           │                       │   │   │   ├── HammingSenderThread.java
│           │                       │   │   │   └── HammingTest.java
│           │                       │   │   └── max/
│           │                       │   │       └── zl/
│           │                       │   │           ├── ZlMaxPartyThread.java
│           │                       │   │           └── ZlMaxTest.java
│           │                       │   ├── corr/
│           │                       │   │   ├── ZlCorrPartyThread.java
│           │                       │   │   └── ZlCorrTest.java
│           │                       │   └── row/
│           │                       │       ├── b2a/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlB2aPartyThread.java
│           │                       │       │       └── ZlB2aTest.java
│           │                       │       ├── crossTerm/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlCrossTermPartyThread.java
│           │                       │       │       └── ZlCrossTermTest.java
│           │                       │       ├── drelu/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlDreluPartyThread.java
│           │                       │       │       └── ZlDreluTest.java
│           │                       │       ├── extension/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlExtensionPartyThread.java
│           │                       │       │       └── ZlExtensionTest.java
│           │                       │       ├── lut/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlLutReceiverThread.java
│           │                       │       │       ├── ZlLutSenderThread.java
│           │                       │       │       └── ZlLutTest.java
│           │                       │       ├── matCrossTerm/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMatCrossTermPartyThread.java
│           │                       │       │       └── ZlMatCrossTermTest.java
│           │                       │       ├── max2/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMax2PartyThread.java
│           │                       │       │       └── ZlMax2Test.java
│           │                       │       ├── millionaire/
│           │                       │       │   ├── MillionairePartyThread.java
│           │                       │       │   ├── MillionaireTest.java
│           │                       │       │   └── MillionaireTestUtils.java
│           │                       │       ├── min2/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMin2PartyThread.java
│           │                       │       │       └── ZlMin2Test.java
│           │                       │       ├── mux/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlMuxReceiverThread.java
│           │                       │       │       ├── ZlMuxSenderThread.java
│           │                       │       │       └── ZlMuxTest.java
│           │                       │       ├── peqt/
│           │                       │       │   ├── PeqtPartyThread.java
│           │                       │       │   ├── PeqtTest.java
│           │                       │       │   └── PeqtTestUtils.java
│           │                       │       ├── trunc/
│           │                       │       │   └── zl/
│           │                       │       │       ├── ZlTruncPartyThread.java
│           │                       │       │       └── ZlTruncTest.java
│           │                       │       └── wrap/
│           │                       │           └── zl/
│           │                       │               ├── ZlWrapPartyThread.java
│           │                       │               └── ZlWrapTest.java
│           │                       └── pcg/
│           │                           ├── dabit/
│           │                           │   ├── DaBitTestUtils.java
│           │                           │   ├── ZlDaBitTupleTest.java
│           │                           │   └── zl/
│           │                           │       ├── ZlDaBitGenPartyThread.java
│           │                           │       └── ZlDaBitGenTest.java
│           │                           ├── osn/
│           │                           │   ├── OsnTestUtils.java
│           │                           │   ├── RosnPartyOutputTest.java
│           │                           │   ├── dosn/
│           │                           │   │   ├── DosnReceiverThread.java
│           │                           │   │   ├── DosnSenderThread.java
│           │                           │   │   └── DosnTest.java
│           │                           │   ├── posn/
│           │                           │   │   ├── PosnReceiverThread.java
│           │                           │   │   ├── PosnSenderThread.java
│           │                           │   │   └── PosnTest.java
│           │                           │   └── rosn/
│           │                           │       ├── RosnReceiverThread.java
│           │                           │       ├── RosnSenderThread.java
│           │                           │       └── RosnTest.java
│           │                           ├── sowoprf/
│           │                           │   ├── F23SowOprfReceiverThread.java
│           │                           │   ├── F23SowOprfSenderThread.java
│           │                           │   ├── F23SowOprfTest.java
│           │                           │   ├── F23WprfMatrixTest.java
│           │                           │   ├── F23WprfTest.java
│           │                           │   ├── F32SowOprfReceiverThread.java
│           │                           │   ├── F32SowOprfSenderThread.java
│           │                           │   ├── F32SowOprfTest.java
│           │                           │   ├── F32WprfMatrixTest.java
│           │                           │   ├── F32WprfTest.java
│           │                           │   └── WprfEfficiencyTest.java
│           │                           ├── st/
│           │                           │   ├── bst/
│           │                           │   │   ├── BstReceiverThread.java
│           │                           │   │   ├── BstSenderThread.java
│           │                           │   │   └── BstTest.java
│           │                           │   ├── pst/
│           │                           │   │   ├── PstReceiverThread.java
│           │                           │   │   ├── PstSenderThread.java
│           │                           │   │   └── PstTest.java
│           │                           │   └── sst/
│           │                           │       ├── SstReceiverThread.java
│           │                           │       ├── SstSenderThread.java
│           │                           │       └── SstTest.java
│           │                           └── triple/
│           │                               ├── TripleTestUtils.java
│           │                               ├── Z2TripleTest.java
│           │                               ├── Zl64TripleTest.java
│           │                               ├── ZlTripleTest.java
│           │                               ├── Zp64TripleTest.java
│           │                               ├── z2/
│           │                               │   ├── Z2TripleGenAidTest.java
│           │                               │   ├── Z2TripleGenPartyThread.java
│           │                               │   └── Z2TripleGenTest.java
│           │                               ├── zl/
│           │                               │   ├── ZlTripleGenAidTest.java
│           │                               │   ├── ZlTripleGenPartyThread.java
│           │                               │   └── ZlTripleGenTest.java
│           │                               └── zl64/
│           │                                   ├── Zl64TripleGenAidTest.java
│           │                                   ├── Zl64TripleGenPartyThread.java
│           │                                   └── Zl64TripleGenTest.java
│           └── resources/
│               ├── conf_rosn_example.conf
│               ├── log4j.properties
│               └── sim example.csv
├── mpc4j-s2pc-opf/
│   ├── pom.xml
│   └── src/
│       ├── main/
│       │   └── java/
│       │       └── edu/
│       │           └── alibaba/
│       │               └── mpc4j/
│       │                   └── s2pc/
│       │                       └── opf/
│       │                           ├── mqrpmt/
│       │                           │   ├── AbstractMqRpmtClient.java
│       │                           │   ├── AbstractMqRpmtServer.java
│       │                           │   ├── MqRpmtClient.java
│       │                           │   ├── MqRpmtConfig.java
│       │                           │   ├── MqRpmtFactory.java
│       │                           │   ├── MqRpmtServer.java
│       │                           │   ├── czz24/
│       │                           │   │   ├── Czz24CwOprfMqRpmtClient.java
│       │                           │   │   ├── Czz24CwOprfMqRpmtConfig.java
│       │                           │   │   ├── Czz24CwOprfMqRpmtPtoDesc.java
│       │                           │   │   └── Czz24CwOprfMqRpmtServer.java
│       │                           │   ├── gmr21/
│       │                           │   │   ├── Gmr21MqRpmtClient.java
│       │                           │   │   ├── Gmr21MqRpmtConfig.java
│       │                           │   │   ├── Gmr21MqRpmtPtoDesc.java
│       │                           │   │   └── Gmr21MqRpmtServer.java
│       │                           │   └── zcl23/
│       │                           │       ├── Zcl23PkeMqRpmtClient.java
│       │                           │       ├── Zcl23PkeMqRpmtConfig.java
│       │                           │       ├── Zcl23PkeMqRpmtPtoDesc.java
│       │                           │       └── Zcl23PkeMqRpmtServer.java
│       │                           ├── opprf/
│       │                           │   ├── batch/
│       │                           │   │   ├── AbstractBopprfReceiver.java
│       │                           │   │   ├── AbstractBopprfSender.java
│       │                           │   │   ├── BopprfConfig.java
│       │                           │   │   ├── BopprfFactory.java
│       │                           │   │   ├── BopprfReceiver.java
│       │                           │   │   ├── BopprfSender.java
│       │                           │   │   └── okvs/
│       │                           │   │       ├── OkvsBopprfConfig.java
│       │                           │   │       ├── OkvsBopprfPtoDesc.java
│       │                           │   │       ├── OkvsBopprfReceiver.java
│       │                           │   │       └── OkvsBopprfSender.java
│       │                           │   └── rb/
│       │                           │       ├── AbstractRbopprfReceiver.java
│       │                           │       ├── AbstractRbopprfSender.java
│       │                           │       ├── RbopprfConfig.java
│       │                           │       ├── RbopprfFactory.java
│       │                           │       ├── RbopprfReceiver.java
│       │                           │       ├── RbopprfSender.java
│       │                           │       └── cgs22/
│       │                           │           ├── Cgs22RbopprfConfig.java
│       │                           │           ├── Cgs22RbopprfPtoDesc.java
│       │                           │           ├── Cgs22RbopprfReceiver.java
│       │                           │           └── Cgs22RbopprfSender.java
│       │                           ├── oprf/
│       │                           │   ├── AbstractMpOprfReceiver.java
│       │                           │   ├── AbstractMpOprfSender.java
│       │                           │   ├── AbstractOprfReceiver.java
│       │                           │   ├── AbstractOprfSender.java
│       │                           │   ├── MpOprfConfig.java
│       │                           │   ├── MpOprfReceiver.java
│       │                           │   ├── MpOprfReceiverOutput.java
│       │                           │   ├── MpOprfSender.java
│       │                           │   ├── MpOprfSenderOutput.java
│       │                           │   ├── OprfConfig.java
│       │                           │   ├── OprfFactory.java
│       │                           │   ├── OprfReceiver.java
│       │                           │   ├── OprfReceiverOutput.java
│       │                           │   ├── OprfSender.java
│       │                           │   ├── OprfSenderOutput.java
│       │                           │   ├── cm20/
│       │                           │   │   ├── Cm20MpOprfConfig.java
│       │                           │   │   ├── Cm20MpOprfPtoDesc.java
│       │                           │   │   ├── Cm20MpOprfReceiver.java
│       │                           │   │   ├── Cm20MpOprfSender.java
│       │                           │   │   ├── Cm20MpOprfSenderOutput.java
│       │                           │   │   └── Cm20MpOprfUtils.java
│       │                           │   ├── fipr05/
│       │                           │   │   ├── Fipr05MpOprfConfig.java
│       │                           │   │   ├── Fipr05MpOprfPtoDesc.java
│       │                           │   │   ├── Fipr05MpOprfReceiver.java
│       │                           │   │   ├── Fipr05MpOprfSender.java
│       │                           │   │   └── Fipr05MpOprfSenderOutput.java
│       │                           │   ├── kkrt16/
│       │                           │   │   ├── Kkrt16OprfSenderOutput.java
│       │                           │   │   ├── Kkrt16OptOprfConfig.java
│       │                           │   │   ├── Kkrt16OptOprfPtoDesc.java
│       │                           │   │   ├── Kkrt16OptOprfReceiver.java
│       │                           │   │   ├── Kkrt16OptOprfSender.java
│       │                           │   │   ├── Kkrt16OriOprfConfig.java
│       │                           │   │   ├── Kkrt16OriOprfPtoDesc.java
│       │                           │   │   ├── Kkrt16OriOprfReceiver.java
│       │                           │   │   └── Kkrt16OriOprfSender.java
│       │                           │   └── rs21/
│       │                           │       ├── Rs21MpOprfConfig.java
│       │                           │       ├── Rs21MpOprfPtoDesc.java
│       │                           │       ├── Rs21MpOprfReceiver.java
│       │                           │       ├── Rs21MpOprfSender.java
│       │                           │       └── Rs21MpOprfSenderOutput.java
│       │                           ├── oprp/
│       │                           │   ├── AbstractOprpReceiver.java
│       │                           │   ├── AbstractOprpSender.java
│       │                           │   ├── OprpConfig.java
│       │                           │   ├── OprpFactory.java
│       │                           │   ├── OprpReceiver.java
│       │                           │   ├── OprpReceiverOutput.java
│       │                           │   ├── OprpSender.java
│       │                           │   ├── OprpSenderOutput.java
│       │                           │   └── lowmc/
│       │                           │       ├── LowMcOprpConfig.java
│       │                           │       ├── LowMcOprpPtoDesc.java
│       │                           │       ├── LowMcOprpReceiver.java
│       │                           │       ├── LowMcOprpSender.java
│       │                           │       └── LowMcUtils.java
│       │                           ├── osorter/
│       │                           │   ├── AbstractObSorter.java
│       │                           │   ├── ObSortConfig.java
│       │                           │   ├── ObSortFactory.java
│       │                           │   ├── ObSorter.java
│       │                           │   ├── bitonic/
│       │                           │   │   ├── BitonicSorter.java
│       │                           │   │   ├── BitonicSorterConfig.java
│       │                           │   │   └── BitonicSorterPtoDesc.java
│       │                           │   └── quick/
│       │                           │       ├── PrpUtils.java
│       │                           │       ├── QuickSortUtils.java
│       │                           │       ├── QuickSorter.java
│       │                           │       ├── QuickSorterConfig.java
│       │                           │       └── QuickSorterPtoDesc.java
│       │                           ├── pmpeqt/
│       │                           │   ├── AbstractPmPeqtReceiver.java
│       │                           │   ├── AbstractPmPeqtSender.java
│       │                           │   ├── PmPeqtConfig.java
│       │                           │   ├── PmPeqtFactory.java
│       │                           │   ├── PmPeqtReceiver.java
│       │                           │   ├── PmPeqtSender.java
│       │                           │   └── tcl23/
│       │   
Download .txt
Showing preview only (2,995K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (33608 symbols across 4403 files)

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/CircuitConfig.java
  type CircuitConfig (line 11) | public interface CircuitConfig extends Config {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/MpcVector.java
  type MpcVector (line 11) | public interface MpcVector extends Vector {
    method isPlain (line 17) | boolean isPlain();

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/DyadicAcOperator.java
  type DyadicAcOperator (line 9) | public enum DyadicAcOperator {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/DyadicBcOperator.java
  type DyadicBcOperator (line 9) | public enum DyadicBcOperator {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/UnaryAcOperator.java
  type UnaryAcOperator (line 9) | public enum UnaryAcOperator {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/UnaryBcOperator.java
  type UnaryBcOperator (line 9) | public enum UnaryBcOperator {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/Z2IntegerOperator.java
  type Z2IntegerOperator (line 9) | public enum Z2IntegerOperator {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/AbstractPrefixTree.java
  class AbstractPrefixTree (line 9) | public abstract class AbstractPrefixTree implements PrefixTree {
    method AbstractPrefixTree (line 15) | public AbstractPrefixTree(PrefixOp prefixOp) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/BrentKungTree.java
  class BrentKungTree (line 18) | public class BrentKungTree extends AbstractPrefixTree {
    method BrentKungTree (line 20) | public BrentKungTree(PrefixOp prefixOp) {
    method addPrefix (line 24) | @Override
    method obtainInvalidNodesNumFirst (line 87) | private int obtainInvalidNodesNumFirst(int offset, int blockSize) {
    method obtainInvalidNodesNumSecond (line 103) | private int obtainInvalidNodesNumSecond(int offset, int blockSize) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/KoggeStoneTree.java
  class KoggeStoneTree (line 18) | public class KoggeStoneTree extends AbstractPrefixTree {
    method KoggeStoneTree (line 20) | public KoggeStoneTree(PrefixOp prefixOp) {
    method addPrefix (line 24) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixNode.java
  type PrefixNode (line 9) | public interface PrefixNode {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixOp.java
  type PrefixOp (line 13) | public interface PrefixOp {
    method updateCurrentLevel (line 21) | default void updateCurrentLevel(int[] inputIndexes, int[] outputIndexe...
    method getPrefixSumNodes (line 33) | PrefixNode[] getPrefixSumNodes();
    method operateAndUpdate (line 43) | void operateAndUpdate(PrefixNode[] x, PrefixNode[] y, int[] outputInde...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixTree.java
  type PrefixTree (line 11) | public interface PrefixTree {
    method addPrefix (line 19) | void addPrefix(int l) throws MpcAbortException;

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixTreeFactory.java
  class PrefixTreeFactory (line 9) | public class PrefixTreeFactory {
    type PrefixTreeTypes (line 13) | public enum PrefixTreeTypes {
    method createPrefixSumTree (line 48) | public static PrefixTree createPrefixSumTree(PrefixTreeTypes type, Pre...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/SklanskyTree.java
  class SklanskyTree (line 18) | public class SklanskyTree extends AbstractPrefixTree {
    method SklanskyTree (line 20) | public SklanskyTree(PrefixOp prefixOp) {
    method addPrefix (line 24) | @Override
    method obtainInvalidNodesNum (line 63) | private int obtainInvalidNodesNum(int offset, int blockSize) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/AbstractZ2Circuit.java
  class AbstractZ2Circuit (line 14) | public class AbstractZ2Circuit {
    method AbstractZ2Circuit (line 20) | public AbstractZ2Circuit(MpcZ2cParty party) {
    method getParty (line 24) | public MpcZ2cParty getParty() {
    method mux (line 37) | public MpcZ2Vector[] mux(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray,...
    method checkInputs (line 42) | protected void checkInputs(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArra...
    method checkInputs (line 55) | protected void checkInputs(MpcZ2Vector[] xs) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/MpcZ2Vector.java
  type MpcZ2Vector (line 14) | public interface MpcZ2Vector extends MpcVector {
    method getBitVector (line 20) | BitVector getBitVector();
    method getBitVectors (line 27) | BitVector[] getBitVectors();
    method setBitVectors (line 36) | void setBitVectors(BitVector... data);
    method bitNum (line 43) | default int bitNum() {
    method byteNum (line 52) | int byteNum();
    method reverseBits (line 57) | void reverseBits();
    method splitWithPadding (line 65) | MpcZ2Vector[] splitWithPadding(int[] bitNums);
    method extendBitsWithSkip (line 79) | MpcZ2Vector extendBitsWithSkip(int destBitLen, int skipLen);
    method getBitsWithSkip (line 92) | MpcZ2Vector[] getBitsWithSkip(int totalBitNum, int skipLen);
    method getPointsWithFixedSpace (line 102) | MpcZ2Vector getPointsWithFixedSpace(int startPos, int num, int skipLen);
    method setPointsWithFixedSpace (line 111) | default void setPointsWithFixedSpace(MpcZ2Vector source, int startPos,...
    method extendLength (line 123) | default void extendLength(int targetBitLength){
    method padShiftLeft (line 133) | MpcZ2Vector padShiftLeft(int n);
    method fixShiftLefti (line 140) | default void fixShiftLefti(int n){
    method reduceShiftRight (line 150) | MpcZ2Vector reduceShiftRight(int n);
    method extendSizeWithSameEle (line 158) | MpcZ2Vector extendSizeWithSameEle(int targetNum);
    method reduceShiftRighti (line 165) | default void reduceShiftRighti(int n){
    method fixShiftRighti (line 174) | default void fixShiftRighti(int n){

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/MpcZ2cParty.java
  type MpcZ2cParty (line 17) | public interface MpcZ2cParty {
    method getParallel (line 23) | boolean getParallel();
    method create (line 32) | MpcZ2Vector create(boolean isPlain, BitVector... bitVector);
    method createOnes (line 40) | MpcZ2Vector createOnes(int bitNum);
    method createZeros (line 48) | MpcZ2Vector createZeros(int bitNum);
    method create (line 57) | default MpcZ2Vector create(int bitNum, boolean value) {
    method createEmpty (line 71) | MpcZ2Vector createEmpty(boolean plain);
    method merge (line 79) | default MpcZ2Vector merge(MpcZ2Vector[] vectors) {
    method split (line 98) | default MpcZ2Vector[] split(MpcZ2Vector mergeVector, int[] bitNums) {
    method init (line 113) | void init(int expectTotalNum) throws MpcAbortException;
    method init (line 120) | void init() throws MpcAbortException;
    method shareOwn (line 129) | MpcZ2Vector shareOwn(BitVector xi) throws MpcAbortException;
    method shareOwn (line 138) | MpcZ2Vector[] shareOwn(BitVector[] xiArray) throws MpcAbortException;
    method shareOther (line 147) | MpcZ2Vector shareOther(int bitNum) throws MpcAbortException;
    method shareOther (line 156) | MpcZ2Vector[] shareOther(int[] bitNums) throws MpcAbortException;
    method open (line 165) | BitVector[] open(MpcZ2Vector[] xiArray) throws MpcAbortException;
    method revealOwn (line 174) | BitVector revealOwn(MpcZ2Vector xi) throws MpcAbortException;
    method revealOwn (line 183) | BitVector[] revealOwn(MpcZ2Vector[] xiArray) throws MpcAbortException;
    method revealOther (line 190) | void revealOther(MpcZ2Vector xi);
    method revealOther (line 197) | void revealOther(MpcZ2Vector[] xiArray);
    method and (line 207) | MpcZ2Vector and(MpcZ2Vector xi, MpcZ2Vector yi) throws MpcAbortException;
    method and (line 217) | MpcZ2Vector[] and(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) throws...
    method and (line 227) | MpcZ2Vector[] and(MpcZ2Vector f, MpcZ2Vector[] xiArray) throws MpcAbor...
    method xor (line 236) | MpcZ2Vector xor(MpcZ2Vector xi, MpcZ2Vector yi);
    method xori (line 244) | void xori(MpcZ2Vector xi, MpcZ2Vector yi);
    method xor (line 254) | MpcZ2Vector[] xor(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) throws...
    method xori (line 263) | default void xori(MpcZ2Vector[] xi, MpcZ2Vector[] yi) throws MpcAbortE...
    method or (line 278) | MpcZ2Vector or(MpcZ2Vector xi, MpcZ2Vector yi) throws MpcAbortException;
    method or (line 288) | MpcZ2Vector[] or(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) throws ...
    method not (line 297) | MpcZ2Vector not(MpcZ2Vector xi) throws MpcAbortException;
    method noti (line 305) | void noti(MpcZ2Vector xi) throws MpcAbortException;
    method not (line 314) | MpcZ2Vector[] not(MpcZ2Vector[] xiArray) throws MpcAbortException;
    method mux (line 325) | default MpcZ2Vector mux(MpcZ2Vector xi, MpcZ2Vector yi, MpcZ2Vector ci...
    method mux (line 338) | default MpcZ2Vector[] mux(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray...
    method mux (line 351) | MpcZ2Vector[] mux(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray, MpcZ2V...
    method eq (line 361) | default MpcZ2Vector eq(MpcZ2Vector xi, MpcZ2Vector yi) throws MpcAbort...
    method eq (line 373) | default MpcZ2Vector[] eq(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray)...
    method setPublicValues (line 383) | MpcZ2Vector[] setPublicValues(BitVector[] data);
    method mergeWithPadding (line 391) | default MpcZ2Vector mergeWithPadding(MpcZ2Vector[] vectors) {
    method xorSelfAllElement (line 410) | MpcZ2Vector xorSelfAllElement(MpcZ2Vector x);
    method xorAllBeforeElement (line 418) | MpcZ2Vector xorAllBeforeElement(MpcZ2Vector x);
    method createShareRandom (line 426) | MpcZ2Vector createShareRandom(int bitNum);
    method createShareZeros (line 433) | MpcZ2Vector createShareZeros(int bitNum);

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/PlainZ2Vector.java
  class PlainZ2Vector (line 18) | public class PlainZ2Vector implements MpcZ2Vector {
    method create (line 25) | public static PlainZ2Vector create(BitVector bitVector) {
    method create (line 38) | public static PlainZ2Vector create(int bitNum, byte[] bytes) {
    method createRandom (line 52) | public static PlainZ2Vector createRandom(int bitNum, Random random) {
    method createOnes (line 64) | public static PlainZ2Vector createOnes(int bitNum) {
    method createZeros (line 76) | public static PlainZ2Vector createZeros(int bitNum) {
    method createEmpty (line 87) | public static PlainZ2Vector createEmpty() {
    method mergeWithPadding (line 98) | public static PlainZ2Vector mergeWithPadding(PlainZ2Vector[] vectors) {
    method PlainZ2Vector (line 113) | private PlainZ2Vector() {
    method byteNum (line 117) | @Override
    method getBitVector (line 122) | @Override
    method getBitVectors (line 127) | @Override
    method setBitVectors (line 132) | @Override
    method isPlain (line 138) | @Override
    method copy (line 143) | @Override
    method getNum (line 151) | @Override
    method split (line 156) | @Override
    method reduce (line 162) | @Override
    method merge (line 167) | @Override
    method reverseBits (line 173) | @Override
    method splitWithPadding (line 178) | @Override
    method extendBitsWithSkip (line 184) | @Override
    method getBitsWithSkip (line 190) | @Override
    method getPointsWithFixedSpace (line 196) | @Override
    method padShiftLeft (line 201) | @Override
    method reduceShiftRight (line 207) | @Override
    method andi (line 213) | public void andi(PlainZ2Vector plainZ2Vector) {
    method extendSizeWithSameEle (line 217) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/PlainZ2cParty.java
  class PlainZ2cParty (line 18) | public class PlainZ2cParty implements MpcZ2cParty {
    method getParallel (line 20) | @Override
    method create (line 25) | @Override
    method createOnes (line 31) | @Override
    method createZeros (line 36) | @Override
    method createEmpty (line 41) | @Override
    method init (line 46) | @Override
    method init (line 51) | @Override
    method shareOwn (line 56) | @Override
    method shareOwn (line 62) | @Override
    method shareOther (line 69) | @Override
    method shareOther (line 76) | @Override
    method open (line 84) | @Override
    method revealOwn (line 91) | @Override
    method revealOwn (line 97) | @Override
    method revealOther (line 104) | @Override
    method revealOther (line 110) | @Override
    method and (line 117) | @Override
    method and (line 124) | @Override
    method xor (line 141) | @Override
    method xori (line 148) | @Override
    method xor (line 154) | @Override
    method or (line 164) | @Override
    method or (line 171) | @Override
    method not (line 188) | @Override
    method noti (line 193) | @Override
    method not (line 198) | @Override
    method and (line 212) | @Override
    method mux (line 217) | @Override
    method setPublicValues (line 223) | @Override
    method xorSelfAllElement (line 233) | @Override
    method xorAllBeforeElement (line 240) | @Override
    method createShareZeros (line 245) | @Override
    method createShareRandom (line 250) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/Z2CircuitConfig.java
  class Z2CircuitConfig (line 17) | public class Z2CircuitConfig implements CircuitConfig {
    method Z2CircuitConfig (line 39) | private Z2CircuitConfig(Builder builder) {
    method getAdderType (line 47) | public AdderFactory.AdderTypes getAdderType() {
    method setAdderType (line 51) | public void setAdderType(AdderFactory.AdderTypes adderType) {
    method setComparatorType (line 55) | public void setComparatorType(ComparatorType comparatorType) {
    method getComparatorType (line 59) | public ComparatorType getComparatorType() {
    method getMultiplierType (line 63) | public MultiplierFactory.MultiplierTypes getMultiplierType() {
    method setMultiplierType (line 67) | public void setMultiplierType(MultiplierFactory.MultiplierTypes multip...
    method getSorterType (line 71) | public SorterFactory.SorterTypes getSorterType() {
    method getPsorterType (line 74) | public PsorterFactory.SorterTypes getPsorterType() {
    method setSorterType (line 78) | public void setSorterType(SorterFactory.SorterTypes sorterType) {
    class Builder (line 82) | public static class Builder implements org.apache.commons.lang3.builde...
      method Builder (line 104) | public Builder() {
      method setAdderType (line 112) | public Builder setAdderType(AdderFactory.AdderTypes adderType) {
      method setComparatorType (line 117) | public Builder setComparatorType(ComparatorType comparatorType) {
      method setMultiplierType (line 122) | public Builder setMultiplierType(MultiplierFactory.MultiplierTypes m...
      method setSorterType (line 127) | public Builder setSorterType(SorterFactory.SorterTypes sorterType) {
      method setPsorterType (line 132) | public Builder setPsorterType(PsorterFactory.SorterTypes pSorterType) {
      method build (line 137) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuit.java
  class Z2IntegerCircuit (line 25) | public class Z2IntegerCircuit extends AbstractZ2Circuit {
    method Z2IntegerCircuit (line 47) | public Z2IntegerCircuit(MpcZ2cParty party) {
    method Z2IntegerCircuit (line 51) | public Z2IntegerCircuit(MpcZ2cParty party, Z2CircuitConfig config) {
    method add (line 69) | public MpcZ2Vector[] add(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray)...
    method add (line 74) | private MpcZ2Vector[] add(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray...
    method sub (line 88) | public MpcZ2Vector[] sub(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray)...
    method increaseOne (line 101) | public MpcZ2Vector[] increaseOne(MpcZ2Vector[] xiArray) throws MpcAbor...
    method mul (line 117) | public MpcZ2Vector[] mul(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray)...
    method eq (line 130) | public MpcZ2Vector eq(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) th...
    method leq (line 164) | public MpcZ2Vector leq(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) t...
    method lessThan (line 176) | public MpcZ2Vector lessThan(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArr...
    method sort (line 182) | public void sort(MpcZ2Vector[][] xiArray) throws MpcAbortException {
    method psort (line 187) | public MpcZ2Vector[] psort(MpcZ2Vector[][] xiArrays, MpcZ2Vector[][] p...
    method getAdder (line 195) | public Adder getAdder() {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/AbstractAdder.java
  class AbstractAdder (line 14) | public abstract class AbstractAdder extends AbstractZ2Circuit implements...
    method AbstractAdder (line 24) | public AbstractAdder(MpcZ2cParty party) {
    method add (line 28) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/Adder.java
  type Adder (line 12) | public interface Adder {
    method add (line 22) | MpcZ2Vector[] add(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray, MpcZ2V...
    method add (line 34) | MpcZ2Vector[] add(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray, boolea...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/AdderFactory.java
  class AdderFactory (line 12) | public class AdderFactory {
    method AdderFactory (line 16) | private AdderFactory() {
    type AdderTypes (line 23) | public enum AdderTypes {
    method createAdder (line 62) | public static Adder createAdder(AdderTypes type, Z2IntegerCircuit circ...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/ParallelPrefixAdder.java
  class ParallelPrefixAdder (line 29) | public class ParallelPrefixAdder extends AbstractAdder implements Prefix...
    method ParallelPrefixAdder (line 43) | public ParallelPrefixAdder(MpcZ2cParty party, PrefixTreeTypes type) {
    class Tuple (line 51) | protected static class Tuple implements PrefixNode {
      method Tuple (line 61) | protected Tuple(MpcZ2Vector g, MpcZ2Vector p) {
      method getG (line 66) | public MpcZ2Vector getG() {
      method getP (line 70) | public MpcZ2Vector getP() {
    method add (line 75) | @Override
    method genTuples (line 97) | private void genTuples(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) t...
    method genCarryOuts (line 111) | private MpcZ2Vector[] genCarryOuts(MpcZ2Vector cin) throws MpcAbortExc...
    method genSumOuts (line 126) | private MpcZ2Vector[] genSumOuts(MpcZ2Vector[] c, MpcZ2Vector cin) thr...
    method op (line 151) | protected Tuple op(Tuple input1, Tuple input2) throws MpcAbortException {
    method vectorOp (line 168) | protected Tuple[] vectorOp(Tuple[] inputs1, Tuple[] inputs2) throws Mp...
    method getPrefixSumNodes (line 183) | @Override
    method operateAndUpdate (line 188) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/RippleCarryAdder.java
  class RippleCarryAdder (line 13) | public class RippleCarryAdder extends AbstractAdder {
    method RippleCarryAdder (line 15) | public RippleCarryAdder(Z2IntegerCircuit circuit) {
    method add (line 19) | @Override
    method addOneBit (line 41) | public MpcZ2Vector[] addOneBit(MpcZ2Vector x, MpcZ2Vector y, MpcZ2Vect...
    method addOneBit (line 58) | public MpcZ2Vector[][] addOneBit(MpcZ2Vector[] x, MpcZ2Vector[] y, Mpc...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/Comparator.java
  type Comparator (line 12) | public interface Comparator {
    method leq (line 21) | MpcZ2Vector leq(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray) throws M...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/ComparatorFactory.java
  class ComparatorFactory (line 12) | public class ComparatorFactory {
    method ComparatorFactory (line 16) | private ComparatorFactory() {
    type ComparatorType (line 23) | public enum ComparatorType {
    method getAndGateNum (line 37) | public static int getAndGateNum(ComparatorType type, int l) {
    method createComparator (line 53) | public static Comparator createComparator(ComparatorType type, Z2Integ...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/SerialComparator.java
  class SerialComparator (line 14) | public class SerialComparator extends AbstractZ2Circuit implements Compa...
    method SerialComparator (line 16) | public SerialComparator(Z2IntegerCircuit circuit) {
    method leq (line 20) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/TreeComparator.java
  class TreeComparator (line 18) | public class TreeComparator extends AbstractZ2Circuit implements Compara...
    method TreeComparator (line 20) | public TreeComparator(Z2IntegerCircuit circuit) {
    method leq (line 24) | @Override
    method biggerThanParallel (line 30) | public MpcZ2Vector biggerThanParallel(MpcZ2Vector[] x, MpcZ2Vector[] y...
    method parallelNumberGen (line 94) | public int[][] parallelNumberGen(int rowLength) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/AbstractMultiplier.java
  class AbstractMultiplier (line 12) | public abstract class AbstractMultiplier extends AbstractZ2Circuit imple...
    method AbstractMultiplier (line 22) | public AbstractMultiplier(MpcZ2cParty party) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/Multiplier.java
  type Multiplier (line 12) | public interface Multiplier {
    method mul (line 21) | MpcZ2Vector[] mul(MpcZ2Vector[] xiArray, MpcZ2Vector[] yiArray)

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/MultiplierFactory.java
  class MultiplierFactory (line 11) | public class MultiplierFactory {
    method MultiplierFactory (line 15) | private MultiplierFactory() {
    type MultiplierTypes (line 22) | public enum MultiplierTypes {
    method createMultiplier (line 36) | public static Multiplier createMultiplier(MultiplierTypes type, Z2Inte...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/ShiftAddMultiplier.java
  class ShiftAddMultiplier (line 17) | public class ShiftAddMultiplier extends AbstractMultiplier {
    method ShiftAddMultiplier (line 23) | public ShiftAddMultiplier(Z2IntegerCircuit circuit) {
    method mul (line 28) | @Override
    method mulInternal (line 43) | private MpcZ2Vector[] mulInternal(MpcZ2Vector[] xs, MpcZ2Vector[] ys) ...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/AbstractPermutationSorter.java
  class AbstractPermutationSorter (line 12) | public abstract class AbstractPermutationSorter extends AbstractZ2Circui...
    method AbstractPermutationSorter (line 38) | public AbstractPermutationSorter(Z2IntegerCircuit circuit) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/Psorter.java
  type Psorter (line 13) | public interface Psorter {
    method sort (line 24) | MpcZ2Vector[] sort(MpcZ2Vector[][] xiArrays, boolean needPermutation, ...
    method sort (line 38) | MpcZ2Vector[] sort(MpcZ2Vector[][] xiArrays, PlainZ2Vector dir, boolea...
    method sort (line 54) | MpcZ2Vector[] sort(MpcZ2Vector[][] xiArrays, MpcZ2Vector[][] payloadAr...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/PsorterFactory.java
  class PsorterFactory (line 12) | public class PsorterFactory {
    method PsorterFactory (line 16) | private PsorterFactory() {
    type SorterTypes (line 23) | public enum SorterTypes {
    method createPsorter (line 36) | public static Psorter createPsorter(PsorterFactory.SorterTypes type, Z...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/bitonic/PermutableBitonicSorter.java
  class PermutableBitonicSorter (line 37) | public class PermutableBitonicSorter extends AbstractPermutationSorter {
    method PermutableBitonicSorter (line 55) | public PermutableBitonicSorter(Z2IntegerCircuit circuit) {
    method sort (line 59) | @Override
    method sort (line 64) | @Override
    method sort (line 69) | @Override
    method initMask (line 94) | private void initMask() {
    method dealInput (line 102) | private void dealInput(MpcZ2Vector[][] xiArrays, MpcZ2Vector[][] paylo...
    method recoverOutput (line 131) | private MpcZ2Vector[] recoverOutput(MpcZ2Vector[][] xiArrays, MpcZ2Vec...
    method bitonicSort (line 142) | private void bitonicSort() throws MpcAbortException {
    method dealBigLevel (line 148) | private void dealBigLevel(int level) throws MpcAbortException {
    method dealOneIter (line 186) | private void dealOneIter(int level, int iterNum) throws MpcAbortExcept...
    method compareExchange (line 201) | private void compareExchange(int totalCompareNum, int skipLen, BitVect...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/AbstractSorter.java
  class AbstractSorter (line 14) | public abstract class AbstractSorter extends AbstractZ2Circuit implement...
    method AbstractSorter (line 28) | public AbstractSorter(Z2IntegerCircuit circuit) {
    method sort (line 32) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/AbstractSortingNetwork.java
  class AbstractSortingNetwork (line 14) | public abstract class AbstractSortingNetwork extends AbstractSorter {
    method AbstractSortingNetwork (line 20) | public AbstractSortingNetwork(Z2IntegerCircuit circuit) {
    method compareExchange (line 34) | protected void compareExchange(MpcZ2Vector[][] xiArray, int i, int j, ...
    method checkInputIndex (line 47) | protected void checkInputIndex(MpcZ2Vector[][] xiArray, int i) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/BitonicSorter.java
  class BitonicSorter (line 24) | public class BitonicSorter extends AbstractSortingNetwork {
    method BitonicSorter (line 26) | public BitonicSorter(Z2IntegerCircuit circuit) {
    method sort (line 30) | @Override
    method bitonicSort (line 35) | private void bitonicSort(MpcZ2Vector[][] xiArrays, int start, int len,...
    method bitonicMerge (line 56) | private void bitonicMerge(MpcZ2Vector[][] xiArray, int start, int len,...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/RandomizedShellSorter.java
  class RandomizedShellSorter (line 24) | public class RandomizedShellSorter extends AbstractSortingNetwork {
    method RandomizedShellSorter (line 30) | public RandomizedShellSorter(Z2IntegerCircuit circuit) {
    method sort (line 34) | @Override
    method permuteRandom (line 39) | private void permuteRandom(int[] indexes, SecureRandom rand) {
    method compareRegions (line 49) | private void compareRegions(MpcZ2Vector[][] xiArray, int s, int t, int...
    method randomizedShellSort (line 63) | public void randomizedShellSort(MpcZ2Vector[][] xiArray) throws MpcAbo...
    method exchangeWhenDescending (line 102) | protected void exchangeWhenDescending(MpcZ2Vector[][] xiArray, int i, ...
    method exchange (line 116) | public static void exchange(int[] indexes, int i, int j) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/Sorter.java
  type Sorter (line 12) | public interface Sorter {
    method sort (line 19) | void sort(MpcZ2Vector[][] xiArrays) throws MpcAbortException;
    method sort (line 28) | void sort(MpcZ2Vector[][] xiArrays, MpcZ2Vector dir)

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/SorterFactory.java
  class SorterFactory (line 12) | public class SorterFactory {
    method SorterFactory (line 16) | private SorterFactory() {
    type SorterTypes (line 23) | public enum SorterTypes {
    method createSorter (line 40) | public static Sorter createSorter(SorterFactory.SorterTypes type, Z2In...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/utils/Z2VectorUtils.java
  class Z2VectorUtils (line 21) | public class Z2VectorUtils {
    method transport (line 22) | public static long[] transport(MpcZ2Vector[] data) {
    method returnCompareResultMask (line 34) | public static byte[][] returnCompareResultMask(int log2) {
    method getBinaryIndex (line 66) | public static BitVector[] getBinaryIndex(int length) {
    method extendBitsWithSkip (line 99) | public static byte[] extendBitsWithSkip(BitVector data, int destBitLen...
    method getBitsWithSkip (line 184) | public static byte[][] getBitsWithSkip(BitVector data, int totalBitNum...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/MpcZlVector.java
  type MpcZlVector (line 13) | public interface MpcZlVector extends MpcVector {
    method getZlVector (line 19) | ZlVector getZlVector();
    method getZl (line 26) | default Zl getZl() {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/MpcZlcParty.java
  type MpcZlcParty (line 13) | public interface MpcZlcParty {
    method create (line 20) | MpcZlVector create(ZlVector zlVector);
    method createOnes (line 29) | MpcZlVector createOnes(Zl zl, int num);
    method createZeros (line 38) | MpcZlVector createZeros(Zl zl, int num);
    method createEmpty (line 47) | MpcZlVector createEmpty(Zl zl, boolean plain);
    method merge (line 55) | default MpcZlVector merge(MpcZlVector[] vectors) {
    method split (line 75) | default MpcZlVector[] split(MpcZlVector mergeVector, int[] nums) {
    method init (line 91) | void init(int maxL, int expectTotalNum) throws MpcAbortException;
    method init (line 99) | void init(int maxL) throws MpcAbortException;
    method shareOwn (line 107) | MpcZlVector shareOwn(ZlVector xi);
    method shareOwn (line 115) | MpcZlVector[] shareOwn(ZlVector[] xiArray);
    method shareOther (line 125) | MpcZlVector shareOther(Zl zl, int num) throws MpcAbortException;
    method shareOther (line 135) | MpcZlVector[] shareOther(Zl zl, int[] nums) throws MpcAbortException;
    method revealOwn (line 144) | ZlVector revealOwn(MpcZlVector xi) throws MpcAbortException;
    method revealOwn (line 153) | ZlVector[] revealOwn(MpcZlVector[] xiArray) throws MpcAbortException;
    method revealOther (line 160) | void revealOther(MpcZlVector xi);
    method revealOther (line 167) | void revealOther(MpcZlVector[] xiArray);
    method add (line 177) | MpcZlVector add(MpcZlVector xi, MpcZlVector yi) throws MpcAbortException;
    method add (line 187) | MpcZlVector[] add(MpcZlVector[] xiArray, MpcZlVector[] yiArray) throws...
    method sub (line 197) | MpcZlVector sub(MpcZlVector xi, MpcZlVector yi) throws MpcAbortException;
    method sub (line 207) | MpcZlVector[] sub(MpcZlVector[] xiArray, MpcZlVector[] yiArray) throws...
    method neg (line 216) | MpcZlVector neg(MpcZlVector xi) throws MpcAbortException;
    method neg (line 225) | MpcZlVector[] neg(MpcZlVector[] xiArray) throws MpcAbortException;
    method mul (line 235) | MpcZlVector mul(MpcZlVector xi, MpcZlVector yi) throws MpcAbortException;
    method mul (line 245) | MpcZlVector[] mul(MpcZlVector[] xiArray, MpcZlVector[] yiArray) throws...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/PlainZlVector.java
  class PlainZlVector (line 16) | public class PlainZlVector implements MpcZlVector {
    method create (line 24) | public static PlainZlVector create(Zl zl, BigInteger[] values) {
    method create (line 36) | public static PlainZlVector create(ZlVector zlVector) {
    method createRandom (line 50) | public static PlainZlVector createRandom(Zl zl, int num, SecureRandom ...
    method createOnes (line 63) | public static PlainZlVector createOnes(Zl zl, int num) {
    method createZeros (line 76) | public static PlainZlVector createZeros(Zl zl, int num) {
    method createEmpty (line 88) | public static PlainZlVector createEmpty(Zl zl) {
    method PlainZlVector (line 102) | private PlainZlVector() {
    method getZlVector (line 106) | @Override
    method isPlain (line 111) | @Override
    method copy (line 116) | @Override
    method getNum (line 124) | @Override
    method split (line 129) | @Override
    method reduce (line 135) | @Override
    method merge (line 140) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/PlainZlcParty.java
  class PlainZlcParty (line 16) | public class PlainZlcParty implements MpcZlcParty {
    method PlainZlcParty (line 26) | public PlainZlcParty() {
    method create (line 30) | @Override
    method createOnes (line 36) | @Override
    method createZeros (line 42) | @Override
    method createEmpty (line 48) | @Override
    method init (line 54) | @Override
    method init (line 62) | @Override
    method shareOwn (line 69) | @Override
    method shareOwn (line 77) | @Override
    method shareOther (line 85) | @Override
    method shareOther (line 93) | @Override
    method revealOwn (line 101) | @Override
    method revealOwn (line 109) | @Override
    method revealOther (line 117) | @Override
    method revealOther (line 125) | @Override
    method add (line 133) | @Override
    method add (line 141) | @Override
    method sub (line 159) | @Override
    method sub (line 167) | @Override
    method neg (line 185) | @Override
    method neg (line 192) | @Override
    method mul (line 208) | @Override
    method mul (line 216) | @Override
    method checkUnaryOperationInput (line 234) | private void checkUnaryOperationInput(MpcZlVector xi) {
    method checkDyadicOperationInputs (line 240) | private void checkDyadicOperationInputs(MpcZlVector xi, MpcZlVector yi) {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/MpcZl64Vector.java
  type MpcZl64Vector (line 13) | public interface MpcZl64Vector extends MpcVector {
    method getZl64Vector (line 19) | Zl64Vector getZl64Vector();
    method getZl64 (line 26) | default Zl64 getZl64() {

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/MpcZl64cParty.java
  type MpcZl64cParty (line 13) | public interface MpcZl64cParty {
    method create (line 20) | MpcZl64Vector create(Zl64Vector vector);
    method createOnes (line 29) | MpcZl64Vector createOnes(Zl64 zl64, int num);
    method createZeros (line 38) | MpcZl64Vector createZeros(Zl64 zl64, int num);
    method createEmpty (line 47) | MpcZl64Vector createEmpty(Zl64 zl64, boolean plain);
    method merge (line 55) | default MpcZl64Vector merge(MpcZl64Vector[] vectors) {
    method split (line 75) | default MpcZl64Vector[] split(MpcZl64Vector mergeVector, int[] nums) {
    method init (line 91) | void init(int maxL, int expectTotalNum) throws MpcAbortException;
    method init (line 99) | void init(int maxL) throws MpcAbortException;
    method shareOwn (line 107) | MpcZl64Vector shareOwn(Zl64Vector xi);
    method shareOwn (line 115) | MpcZl64Vector[] shareOwn(Zl64Vector[] xiArray);
    method shareOther (line 125) | MpcZl64Vector shareOther(Zl64 zl64, int num) throws MpcAbortException;
    method shareOther (line 135) | MpcZl64Vector[] shareOther(Zl64 zl64, int[] nums) throws MpcAbortExcep...
    method revealOwn (line 144) | Zl64Vector revealOwn(MpcZl64Vector xi) throws MpcAbortException;
    method revealOwn (line 153) | Zl64Vector[] revealOwn(MpcZl64Vector[] xiArray) throws MpcAbortException;
    method revealOther (line 160) | void revealOther(MpcZl64Vector xi);
    method revealOther (line 167) | void revealOther(MpcZl64Vector[] xiArray);
    method add (line 177) | MpcZl64Vector add(MpcZl64Vector xi, MpcZl64Vector yi) throws MpcAbortE...
    method add (line 187) | MpcZl64Vector[] add(MpcZl64Vector[] xiArray, MpcZl64Vector[] yiArray) ...
    method sub (line 197) | MpcZl64Vector sub(MpcZl64Vector xi, MpcZl64Vector yi) throws MpcAbortE...
    method sub (line 207) | MpcZl64Vector[] sub(MpcZl64Vector[] xiArray, MpcZl64Vector[] yiArray) ...
    method neg (line 216) | MpcZl64Vector neg(MpcZl64Vector xi) throws MpcAbortException;
    method neg (line 225) | MpcZl64Vector[] neg(MpcZl64Vector[] xiArray) throws MpcAbortException;
    method mul (line 235) | MpcZl64Vector mul(MpcZl64Vector xi, MpcZl64Vector yi) throws MpcAbortE...
    method mul (line 245) | MpcZl64Vector[] mul(MpcZl64Vector[] xiArray, MpcZl64Vector[] yiArray) ...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/PlainZl64Vector.java
  class PlainZl64Vector (line 15) | public class PlainZl64Vector implements MpcZl64Vector {
    method create (line 23) | public static PlainZl64Vector create(Zl64 zl64, long[] values) {
    method create (line 35) | public static PlainZl64Vector create(Zl64Vector zl64Vector) {
    method createRandom (line 49) | public static PlainZl64Vector createRandom(Zl64 zl64, int num, SecureR...
    method createOnes (line 62) | public static PlainZl64Vector createOnes(Zl64 zl64, int num) {
    method createZeros (line 75) | public static PlainZl64Vector createZeros(Zl64 zl64, int num) {
    method createEmpty (line 87) | public static PlainZl64Vector createEmpty(Zl64 zl64) {
    method PlainZl64Vector (line 101) | private PlainZl64Vector() {
    method getZl64Vector (line 105) | @Override
    method isPlain (line 110) | @Override
    method copy (line 115) | @Override
    method getNum (line 123) | @Override
    method split (line 128) | @Override
    method reduce (line 134) | @Override
    method merge (line 139) | @Override

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/PlainZl64cParty.java
  class PlainZl64cParty (line 16) | public class PlainZl64cParty implements MpcZl64cParty {
    method PlainZl64cParty (line 26) | public PlainZl64cParty() {
    method create (line 30) | @Override
    method createOnes (line 36) | @Override
    method createZeros (line 42) | @Override
    method createEmpty (line 48) | @Override
    method init (line 54) | @Override
    method init (line 62) | @Override
    method shareOwn (line 69) | @Override
    method shareOwn (line 77) | @Override
    method shareOther (line 85) | @Override
    method shareOther (line 93) | @Override
    method revealOwn (line 101) | @Override
    method revealOwn (line 109) | @Override
    method revealOther (line 117) | @Override
    method revealOther (line 125) | @Override
    method add (line 133) | @Override
    method add (line 141) | @Override
    method sub (line 159) | @Override
    method sub (line 167) | @Override
    method neg (line 185) | @Override
    method neg (line 192) | @Override
    method mul (line 208) | @Override
    method mul (line 216) | @Override
    method checkUnaryOperationInput (line 234) | private void checkUnaryOperationInput(MpcZl64Vector xi) {
    method checkDyadicOperationInputs (line 240) | private void checkDyadicOperationInputs(MpcZl64Vector xi, MpcZl64Vecto...

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/MpcLongParty.java
  type MpcLongParty (line 18) | public interface MpcLongParty {
    method getParallel (line 24) | boolean getParallel();
    method create (line 33) | MpcLongVector create(boolean isPlain, LongVector... longVector);
    method create (line 42) | MpcLongVector create(boolean isPlain, long[]... longs);
    method merge (line 50) | default MpcLongVector merge(MpcLongVector[] vectors) {
    method split (line 69) | default MpcLongVector[] split(MpcLongVector mergeVector, int[] nums) {
    method setPublicValue (line 85) | MpcLongVector setPublicValue(LongVector xi);
    method shareOwn (line 93) | default MpcLongVector shareOwn(LongVector xi) throws MpcAbortException {
    method shareOwn (line 103) | MpcLongVector[] shareOwn(LongVector[] xiArray) throws MpcAbortException;
    method shareOther (line 112) | default MpcLongVector shareOther(int num, Party party) throws MpcAbort...
    method shareOther (line 123) | MpcLongVector[] shareOther(int[] nums, Party party) throws MpcAbortExc...
    method revealOwn (line 132) | default LongVector[] revealOwn(MpcLongVector... xiArray) throws MpcAbo...
    method revealOwn (line 144) | LongVector[] revealOwn(int validBitLen, MpcLongVector... xiArray) thro...
    method revealOther (line 152) | void revealOther(Party party, MpcLongVector... xiArray) throws MpcAbor...
    method open (line 159) | default LongVector[] open(MpcLongVector... xiArray) throws MpcAbortExc...
    method open (line 169) | LongVector[] open(int validBits, MpcLongVector... xiArray) throws MpcA...
    method add (line 178) | MpcLongVector add(MpcLongVector xi, MpcLongVector yi);
    method add (line 187) | default MpcLongVector[] add(MpcLongVector[] xiArray, MpcLongVector[] y...
    method addi (line 199) | void addi(MpcLongVector xi, MpcLongVector yi);
    method addi (line 207) | default void addi(MpcLongVector[] xiArray, MpcLongVector[] yiArray) {
    method sub (line 220) | MpcLongVector sub(MpcLongVector xi, MpcLongVector yi);
    method sub (line 229) | default MpcLongVector[] sub(MpcLongVector[] xiArray, MpcLongVector[] y...
    method subi (line 241) | void subi(MpcLongVector xi, MpcLongVector yi);
    method subi (line 249) | default void subi(MpcLongVector[] xiArray, MpcLongVector[] yiArray) {
    method neg (line 261) | MpcLongVector neg(MpcLongVector xi);
    method neg (line 269) | default MpcLongVector[] neg(MpcLongVector[] xiArray) {
    method negi (line 279) | void negi(MpcLongVector xi);
    method negi (line 286) | default void negi(MpcLongVector[] xiArray) {
    method mul (line 298) | default MpcLongVector mul(MpcLongVector xi, MpcLongVector yi) {
    method mul (line 309) | MpcLongVector[] mul(MpcLongVector[] xiArray, MpcLongVector[] yiArray);
    method muli (line 317) | default void muli(MpcLongVector xi, PlainLongVector yi) {
    method muli (line 327) | void muli(MpcLongVector[] xiArray, PlainLongVector[] yiArray);

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/MpcLongVector.java
  type MpcLongVector (line 12) | public interface MpcLongVector extends MpcVector {
    method getVectors (line 18) | LongVector[] getVectors();
    method setVectors (line 24) | void setVectors(LongVector... vec);
    method split (line 32) | MpcLongVector[] split(int[] splitNums);

FILE: mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/PlainLongVector.java
  class PlainLongVector (line 16) | public class PlainLongVector implements MpcLongVector {
    method create (line 23) | public static PlainLongVector create(long[] values) {
    method create (line 33) | public static PlainLongVector create(LongVector longVector) {
    method createRandom (line 44) | public static PlainLongVector createRandom(int num, SecureRandom secur...
    method createOnes (line 54) | public static PlainLongVector createOnes(int num) {
    method createZeros (line 64) | public static PlainLongVector createZeros(int num) {
    method PlainLongVector (line 76) | private PlainLongVector(LongVector longVector) {
    method getVectors (line 80) | @Override
    method setVectors (line 85) | @Override
    method split (line 91) | @Override
    method isPlain (line 101) | @Override
    method copy (line 106) | @Override
    method getNum (line 111) | @Override
    method split (line 116) | @Override
    method reduce (line 122) | @Override
    method merge (line 127) | @Override

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/BatchPlainZ2PartyTest.java
  class BatchPlainZ2PartyTest (line 21) | public class BatchPlainZ2PartyTest {
    method BatchPlainZ2PartyTest (line 39) | public BatchPlainZ2PartyTest() {
    method test1BitNum (line 43) | @Test
    method test2BitNum (line 48) | @Test
    method test8BitNum (line 53) | @Test
    method test15BitNum (line 58) | @Test
    method testDefaultBitNum (line 63) | @Test
    method testLargeBitNum (line 68) | @Test
    method testPto (line 73) | private void testPto(int bitNum) {
    method testDyadicOperator (line 82) | private void testDyadicOperator(DyadicBcOperator operator, int bitNum) {
    method testUnaryOperator (line 127) | private void testUnaryOperator(UnaryBcOperator operator, int bitNum) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/SinglePlainZ2PartyTest.java
  class SinglePlainZ2PartyTest (line 20) | public class SinglePlainZ2PartyTest {
    method SinglePlainZ2PartyTest (line 34) | public SinglePlainZ2PartyTest() {
    method test1BitNum (line 38) | @Test
    method test2BitNum (line 43) | @Test
    method test8BitNum (line 48) | @Test
    method test15BitNum (line 53) | @Test
    method testDefaultBitNum (line 58) | @Test
    method testLargeBitNum (line 63) | @Test
    method testPto (line 68) | private void testPto(int bitNum) {
    method testDyadicOperator (line 77) | private void testDyadicOperator(DyadicBcOperator operator, int bitNum) {
    method testUnaryOperator (line 112) | private void testUnaryOperator(UnaryBcOperator operator, int bitNum) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2AdderTest.java
  class Z2AdderTest (line 31) | @RunWith(Parameterized.class)
    method configurations (line 59) | @Parameterized.Parameters(name = "{0}")
    method Z2AdderTest (line 86) | public Z2AdderTest(String name, Z2CircuitConfig config) {
    method testConstant (line 91) | @Test
    method testConstant (line 97) | public void testConstant(int l) {
    method test1Num (line 108) | @Test
    method test2Num (line 113) | @Test
    method test8Num (line 118) | @Test
    method testLargeNum (line 123) | @Test
    method testRandom (line 128) | private void testRandom(int num) {
    method testRandom (line 133) | private void testRandom(int l, int num) {
    method testPto (line 145) | private void testPto(boolean constant, int l, long[] longXs, long[] lo...

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2CircuitTestUtils.java
  class Z2CircuitTestUtils (line 16) | public class Z2CircuitTestUtils {
    method assertOutput (line 26) | static void assertOutput(Z2IntegerOperator operator, int l, long[] xs,...
    method assertSortOutput (line 84) | static void assertSortOutput(int l, long[][] xs, long[][] zs) {
    method assertPsortStableOutput (line 111) | static void assertPsortStableOutput(long[] xs, long[][] payloadXs, int...

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2ComparatorTest.java
  class Z2ComparatorTest (line 33) | @RunWith(Parameterized.class)
    method configurations (line 57) | @Parameterized.Parameters(name = "{0}")
    method Z2ComparatorTest (line 74) | public Z2ComparatorTest(String name, Z2CircuitConfig config) {
    method testDefault (line 79) | @Test
    method test1Num (line 95) | @Test
    method test2Num (line 100) | @Test
    method test8Num (line 105) | @Test
    method testLargeNum (line 110) | @Test
    method testRandom (line 115) | private void testRandom(int num) {
    method testRandom (line 120) | private void testRandom(int l, int num) {
    method testPto (line 132) | private void testPto(int l, BigInteger[] xs, BigInteger[] ys) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuitParty.java
  class Z2IntegerCircuitParty (line 14) | class Z2IntegerCircuitParty {
    method Z2IntegerCircuitParty (line 53) | Z2IntegerCircuitParty(PlainZ2cParty party, Z2IntegerOperator operator,...
    method Z2IntegerCircuitParty (line 57) | Z2IntegerCircuitParty(PlainZ2cParty party, Z2IntegerOperator operator,...
    method setPsorterConfig (line 65) | public void setPsorterConfig(PlainZ2Vector pSortDir, boolean needPermu...
    method getZ (line 71) | MpcZ2Vector[] getZ() {
    method run (line 75) | void run() {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuitTest.java
  class Z2IntegerCircuitTest (line 27) | public class Z2IntegerCircuitTest {
    method testConstant (line 50) | @Test
    method testConstant (line 56) | public void testConstant(int l) {
    method test1Num (line 67) | @Test
    method test2Num (line 72) | @Test
    method test8Num (line 77) | @Test
    method testLargeNum (line 82) | @Test
    method testRandom (line 87) | private void testRandom(int num) {
    method testRandom (line 92) | private void testRandom(int l, int num) {
    method testPto (line 103) | private void testPto(boolean constant, int l, long[] longXs, long[] lo...
    method testPto (line 112) | private void testPto(boolean constant, Z2IntegerOperator operator, int...

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2MultiplierTest.java
  class Z2MultiplierTest (line 31) | @RunWith(Parameterized.class)
    method configurations (line 59) | @Parameterized.Parameters(name = "{0}")
    method Z2MultiplierTest (line 71) | public Z2MultiplierTest(String name, Z2CircuitConfig config) {
    method testConstant (line 76) | @Test
    method testConstant (line 82) | public void testConstant(int l) {
    method test1Num (line 93) | @Test
    method test2Num (line 98) | @Test
    method test8Num (line 103) | @Test
    method testLargeNum (line 108) | @Test
    method testRandom (line 113) | private void testRandom(int num) {
    method testRandom (line 118) | private void testRandom(int l, int num) {
    method testPto (line 130) | private void testPto(boolean constant, int l, long[] longXs, long[] lo...

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2PsorterTest.java
  class Z2PsorterTest (line 32) | @RunWith(Parameterized.class)
    method configurations (line 72) | @Parameterized.Parameters(name = "{0}")
    method Z2PsorterTest (line 85) | public Z2PsorterTest(String name, Z2CircuitConfig config) {
    method test1SortedNum (line 91) | @Test
    method test4SortedNum (line 97) | @Test
    method test8SortedNum (line 103) | @Test
    method testDefaultSortedNum (line 109) | @Test
    method testLargeSortedNum (line 115) | @Test
    method testRandom (line 121) | private void testRandom(int numOfSorted, int payloadNum) {
    method testRandom (line 126) | private void testRandom(int l, int numOfSorted, int payloadNum) {
    method testPto (line 139) | private void testPto(int l, long[] xs, long[][] payloads) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2SorterTest.java
  class Z2SorterTest (line 31) | @RunWith(Parameterized.class)
    method configurations (line 71) | @Parameterized.Parameters(name = "{0}")
    method Z2SorterTest (line 88) | public Z2SorterTest(String name, Z2CircuitConfig config) {
    method testConstant (line 94) | @Test
    method testConstant (line 100) | public void testConstant(int l) {
    method test1SortedNum (line 108) | @Test
    method test2SortedNum (line 115) | @Test
    method test8SortedNum (line 122) | @Test
    method testDefaultSortedNum (line 128) | @Test
    method testLargeSortedNum (line 134) | @Test
    method testRandom (line 140) | private void testRandom(int num, int numOfSorted) {
    method testRandom (line 145) | private void testRandom(int l, int num, int numOfSorted) {
    method testPto (line 156) | private void testPto(int l, long[][] xs) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/zl/BatchPlainZlPartyTest.java
  class BatchPlainZlPartyTest (line 29) | @RunWith(Parameterized.class)
    method configurations (line 45) | @Parameterized.Parameters(name = "{0}")
    method BatchPlainZlPartyTest (line 73) | public BatchPlainZlPartyTest(String name, Zl zl) {
    method test1Num (line 79) | @Test
    method test2Num (line 84) | @Test
    method test8Num (line 89) | @Test
    method test15Num (line 94) | @Test
    method testDefaultNum (line 99) | @Test
    method testLargeNum (line 104) | @Test
    method testPto (line 109) | private void testPto(int num) {
    method testDyadicOperator (line 118) | private void testDyadicOperator(DyadicAcOperator operator, int num) {
    method testUnaryOperator (line 163) | private void testUnaryOperator(UnaryAcOperator operator, int num) {

FILE: mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/zl/SinglePlainZlPartyTest.java
  class SinglePlainZlPartyTest (line 28) | @RunWith(Parameterized.class)
    method configurations (line 39) | @Parameterized.Parameters(name = "{0}")
    method SinglePlainZlPartyTest (line 67) | public SinglePlainZlPartyTest(String name, Zl zl) {
    method test1Num (line 73) | @Test
    method test2Num (line 78) | @Test
    method test8Num (line 83) | @Test
    method test15Num (line 88) | @Test
    method testDefaultNum (line 93) | @Test
    method testLargeNum (line 98) | @Test
    method testPto (line 103) | private void testPto(int num) {
    method testDyadicOperator (line 112) | private void testDyadicOperator(DyadicAcOperator operator, int num) {
    method testUnaryOperator (line 147) | @SuppressWarnings("SameParameterValue")

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/DataFrameUtils.java
  class DataFrameUtils (line 13) | public class DataFrameUtils {
    method DataFrameUtils (line 17) | private DataFrameUtils() {
    method split (line 28) | public static DataFrame[] split(DataFrame dataFrame, int num) {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/DatasetManager.java
  class DatasetManager (line 12) | public class DatasetManager {
    method DatasetManager (line 25) | private DatasetManager() {
    method setPathPrefix (line 34) | public static void setPathPrefix(String pathPrefix) {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/BreastCancer.java
  class BreastCancer (line 40) | public class BreastCancer {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/Iris.java
  class Iris (line 42) | public class Iris {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/PenDigits.java
  class PenDigits (line 47) | public class PenDigits {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/Weather.java
  class Weather (line 42) | public class Weather {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Abalone.java
  class Abalone (line 51) | public class Abalone {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/AutoMpg.java
  class AutoMpg (line 43) | public class AutoMpg {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/BostonHousing.java
  class BostonHousing (line 42) | public class BostonHousing {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Cpu.java
  class Cpu (line 41) | public class Cpu {

FILE: mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Kin8nm.java
  class Kin8nm (line 47) | public class Kin8nm {

FILE: mpc4j-common-data/src/test/java/edu/alibaba/mpc4j/common/data/DatasetTest.java
  class DatasetTest (line 19) | public class DatasetTest {
    method testCpu (line 22) | @Test
    method testAbalone (line 27) | @Test
    method testAutoMpg (line 32) | @Test
    method testBostonHousing (line 37) | @Test
    method testKin8nm (line 42) | @Test
    method testWeather (line 47) | @Test
    method testIris (line 52) | @Test
    method testPenDigits (line 57) | @Test
    method testBreastCancer (line 62) | @Test
    method testDataset (line 67) | private void testDataset(String name, DataFrame trainDataFrame, DataFr...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/MpcAbortException.java
  class MpcAbortException (line 9) | public class MpcAbortException extends Exception {
    method MpcAbortException (line 19) | public MpcAbortException() {
    method MpcAbortException (line 27) | public MpcAbortException(String  message) {
    method MpcAbortException (line 37) | public MpcAbortException(String  message, Throwable cause) {
    method getCause (line 43) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/MpcAbortPreconditions.java
  class MpcAbortPreconditions (line 13) | @GwtCompatible
    method MpcAbortPreconditions (line 18) | private MpcAbortPreconditions() {
    method checkArgument (line 28) | public static void checkArgument(boolean expression) throws MpcAbortEx...
    method checkArgument (line 43) | public static void checkArgument(boolean expression, @Nullable Object ...
    method checkArgument (line 63) | public static void checkArgument(boolean expression, @Nullable String ...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/Party.java
  type Party (line 9) | public interface Party extends Comparable<Party> {
    method getPartyId (line 15) | int getPartyId();
    method getPartyName (line 22) | String getPartyName();
    method compareTo (line 24) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/PartyState.java
  type PartyState (line 9) | public enum PartyState {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/PtoState.java
  type PtoState (line 9) | public enum PtoState {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/Rpc.java
  type Rpc (line 26) | public interface Rpc {
    method ownParty (line 32) | Party ownParty();
    method getPartySet (line 39) | Set<Party> getPartySet();
    method getParty (line 47) | Party getParty(int partyId);
    method connect (line 62) | void connect();
    method send (line 69) | void send(DataPacket dataPacket);
    method receive (line 77) | DataPacket receive(DataPacketHeader header);
    method receiveAny (line 86) | DataPacket receiveAny(int ptoId);
    method getPayloadByteLength (line 93) | long getPayloadByteLength();
    method getSendByteLength (line 100) | long getSendByteLength();
    method getSendDataPacketNum (line 107) | long getSendDataPacketNum();
    method synchronize (line 112) | void synchronize();
    method reset (line 117) | void reset();
    method disconnect (line 131) | void disconnect();

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/RpcManager.java
  type RpcManager (line 11) | public interface RpcManager {
    method getRpc (line 18) | Rpc getRpc(int partyId);
    method getPartyNum (line 25) | int getPartyNum();
    method getPartySet (line 32) | Set<Party> getPartySet();

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/RpcPropertiesUtils.java
  class RpcPropertiesUtils (line 18) | public class RpcPropertiesUtils {
    method RpcPropertiesUtils (line 20) | private RpcPropertiesUtils() {
    method readNettyRpcWithOwnName (line 32) | public static Rpc readNettyRpcWithOwnName(Properties properties, Strin...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/PtoDesc.java
  type PtoDesc (line 9) | public interface PtoDesc {
    method getPtoId (line 15) | int getPtoId();
    method getPtoName (line 22) | String getPtoName();

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/PtoDescManager.java
  class PtoDescManager (line 12) | public class PtoDescManager {
    method PtoDescManager (line 25) | private PtoDescManager() {
    method registerPtoDesc (line 34) | public static void registerPtoDesc(PtoDesc ptoDesc) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/SecurityModel.java
  type SecurityModel (line 9) | public enum SecurityModel {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileParty.java
  class FileParty (line 17) | public class FileParty implements Party {
    method FileParty (line 37) | FileParty(int partyId, String partyName, String partyFilePath) {
    method getPartyId (line 47) | @Override
    method getPartyName (line 52) | @Override
    method getPartyFilePath (line 57) | public String getPartyFilePath() {
    method hashCode (line 61) | @Override
    method equals (line 70) | @Override
    method toString (line 86) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FilePtoDesc.java
  class FilePtoDesc (line 12) | class FilePtoDesc implements PtoDesc {
    type StepEnum (line 25) | enum StepEnum {
    method FilePtoDesc (line 44) | private FilePtoDesc() {
    method getInstance (line 48) | public static PtoDesc getInstance() {
    method getPtoId (line 56) | @Override
    method getPtoName (line 61) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileRpc.java
  class FileRpc (line 23) | public class FileRpc implements Rpc {
    method FileRpc (line 80) | public FileRpc(FileParty ownParty, Set<FileParty> partySet) {
    method ownParty (line 95) | @Override
    method getPartySet (line 100) | @Override
    method getParty (line 105) | @Override
    method connect (line 111) | @Override
    method send (line 124) | @Override
    method receive (line 173) | @Override
    method receiveAny (line 227) | @Override
    method getPayloadByteLength (line 242) | @Override
    method getSendByteLength (line 247) | @Override
    method getSendDataPacketNum (line 252) | @Override
    method reset (line 257) | @Override
    method synchronize (line 264) | @Override
    method getPayloadFileName (line 298) | private String getPayloadFileName(DataPacketHeader header) {
    method getStatusFileName (line 309) | private String getStatusFileName(DataPacketHeader header) {
    method getReceivedDataPacketHeaders (line 320) | private DataPacketHeader[] getReceivedDataPacketHeaders(int targetPtoI...
    method disconnect (line 349) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileRpcManager.java
  class FileRpcManager (line 23) | public class FileRpcManager implements RpcManager {
    method FileRpcManager (line 43) | public FileRpcManager(int partyNum) {
    method getRpc (line 61) | @Override
    method getPartyName (line 69) | private String getPartyName(int partyId) {
    method getPartyNum (line 73) | @Override
    method getPartySet (line 78) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryParty.java
  class MemoryParty (line 15) | public class MemoryParty implements Party {
    method MemoryParty (line 31) | public MemoryParty(int partyId, String partyName) {
    method getPartyId (line 38) | @Override
    method getPartyName (line 43) | @Override
    method hashCode (line 48) | @Override
    method equals (line 56) | @Override
    method toString (line 71) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryPtoDesc.java
  class MemoryPtoDesc (line 12) | class MemoryPtoDesc implements PtoDesc {
    type StepEnum (line 25) | enum StepEnum {
    method MemoryPtoDesc (line 44) | private MemoryPtoDesc() {
    method getInstance (line 48) | public static PtoDesc getInstance() {
    method getPtoId (line 56) | @Override
    method getPtoName (line 61) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryRpc.java
  class MemoryRpc (line 23) | public class MemoryRpc implements Rpc {
    method MemoryRpc (line 61) | public MemoryRpc(MemoryParty ownParty, Set<MemoryParty> partySet, Data...
    method ownParty (line 78) | @Override
    method getPartySet (line 83) | @Override
    method getParty (line 88) | @Override
    method connect (line 94) | @Override
    method send (line 107) | @Override
    method receive (line 142) | @Override
    method receiveAny (line 158) | @Override
    method getPayloadByteLength (line 167) | @Override
    method getSendByteLength (line 172) | @Override
    method getSendDataPacketNum (line 177) | @Override
    method reset (line 182) | @Override
    method synchronize (line 189) | @Override
    method disconnect (line 223) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryRpcManager.java
  class MemoryRpcManager (line 23) | public class MemoryRpcManager implements RpcManager {
    method MemoryRpcManager (line 43) | public MemoryRpcManager(int partyNum) {
    method getRpc (line 63) | @Override
    method getPartyName (line 69) | private String getPartyName(int partyId) {
    method getPartyNum (line 73) | @Override
    method getPartySet (line 78) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/NettyParty.java
  class NettyParty (line 15) | public class NettyParty implements Party {
    method NettyParty (line 33) | public NettyParty(int partyId, String partyName, String host, int port) {
    method getPartyId (line 44) | @Override
    method getPartyName (line 49) | @Override
    method getHost (line 59) | public String getHost() {
    method getPort (line 68) | public int getPort() {
    method hashCode (line 72) | @Override
    method equals (line 82) | @Override
    method toString (line 98) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/RobustNettyRpcProtobuf.java
  class RobustNettyRpcProtobuf (line 6) | public final class RobustNettyRpcProtobuf {
    method RobustNettyRpcProtobuf (line 7) | private RobustNettyRpcProtobuf() {}
    method registerAllExtensions (line 8) | public static void registerAllExtensions(
    method registerAllExtensions (line 12) | public static void registerAllExtensions(
    type RobustMessageProtoOrBuilder (line 17) | public interface RobustMessageProtoOrBuilder extends
      method hasChunk (line 25) | boolean hasChunk();
      method getChunk (line 30) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
      method getChunkOrBuilder (line 34) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
    class RobustMessageProto (line 45) | public static final class RobustMessageProto extends
      method RobustMessageProto (line 51) | private RobustMessageProto(com.google.protobuf.GeneratedMessageV3.Bu...
      method RobustMessageProto (line 54) | private RobustMessageProto() {
      method newInstance (line 57) | @java.lang.Override
      method getUnknownFields (line 64) | @java.lang.Override
      method RobustMessageProto (line 69) | private RobustMessageProto(
      method getDescriptor (line 121) | public static final com.google.protobuf.Descriptors.Descriptor
      method internalGetFieldAccessorTable (line 126) | @java.lang.Override
      method hasChunk (line 140) | @java.lang.Override
      method getChunk (line 148) | @java.lang.Override
      method getChunkOrBuilder (line 155) | @java.lang.Override
      method isInitialized (line 161) | @java.lang.Override
      method writeTo (line 171) | @java.lang.Override
      method getSerializedSize (line 180) | @java.lang.Override
      method equals (line 195) | @java.lang.Override
      method hashCode (line 214) | @java.lang.Override
      method parseFrom (line 230) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 235) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 241) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 246) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 252) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 256) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 262) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 267) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseDelimitedFrom (line 274) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseDelimitedFrom (line 279) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 286) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 292) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method newBuilderForType (line 300) | @java.lang.Override
      method newBuilder (line 302) | public static Builder newBuilder() {
      method newBuilder (line 305) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl.n...
      method toBuilder (line 308) | @java.lang.Override
      method newBuilderForType (line 314) | @java.lang.Override
      class Builder (line 329) | public static final class Builder extends
        method getDescriptor (line 333) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 338) | @java.lang.Override
        method Builder (line 347) | private Builder() {
        method Builder (line 351) | private Builder(
        method maybeForceBuilderInitialization (line 356) | private void maybeForceBuilderInitialization() {
        method clear (line 361) | @java.lang.Override
        method getDescriptorForType (line 373) | @java.lang.Override
        method getDefaultInstanceForType (line 379) | @java.lang.Override
        method build (line 384) | @java.lang.Override
        method buildPartial (line 393) | @java.lang.Override
        method clone (line 405) | @java.lang.Override
        method setField (line 409) | @java.lang.Override
        method clearField (line 415) | @java.lang.Override
        method clearOneof (line 420) | @java.lang.Override
        method setRepeatedField (line 425) | @java.lang.Override
        method addRepeatedField (line 431) | @java.lang.Override
        method mergeFrom (line 437) | @java.lang.Override
        method mergeFrom (line 447) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty.p...
        method isInitialized (line 457) | @java.lang.Override
        method mergeFrom (line 462) | @java.lang.Override
        method hasChunk (line 488) | public boolean hasChunk() {
        method getChunk (line 495) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method setChunk (line 505) | public Builder setChunk(edu.alibaba.mpc4j.common.rpc.impl.netty.pr...
        method setChunk (line 521) | public Builder setChunk(
        method mergeChunk (line 535) | public Builder mergeChunk(edu.alibaba.mpc4j.common.rpc.impl.netty....
        method clearChunk (line 553) | public Builder clearChunk() {
        method getChunkBuilder (line 567) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getChunkOrBuilder (line 575) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getChunkFieldBuilder (line 586) | private com.google.protobuf.SingleFieldBuilderV3<
        method setUnknownFields (line 599) | @java.lang.Override
        method mergeUnknownFields (line 605) | @java.lang.Override
      method getDefaultInstance (line 621) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parsePartialFrom (line 627) | @java.lang.Override
      method parser (line 636) | public static com.google.protobuf.Parser<RobustMessageProto> parser() {
      method getParserForType (line 640) | @java.lang.Override
      method getDefaultInstanceForType (line 645) | @java.lang.Override
    type ChunkProtoOrBuilder (line 652) | public interface ChunkProtoOrBuilder extends
      method hasHeaderProto (line 664) | boolean hasHeaderProto();
      method getHeaderProto (line 673) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
      method getHeaderProtoOrBuilder (line 681) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
      method hasTypeProto (line 691) | boolean hasTypeProto();
      method getTypeProto (line 700) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
      method getTypeProtoOrBuilder (line 708) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNettyRpcProto...
      method getChunkIndex (line 718) | int getChunkIndex();
      method getTotalChunks (line 728) | int getTotalChunks();
      method getChunkData (line 738) | com.google.protobuf.ByteString getChunkData();
      method getTotalBytes (line 750) | long getTotalBytes();
    class ChunkProto (line 761) | public static final class ChunkProto extends
      method ChunkProto (line 767) | private ChunkProto(com.google.protobuf.GeneratedMessageV3.Builder<?>...
      method ChunkProto (line 770) | private ChunkProto() {
      method newInstance (line 774) | @java.lang.Override
      method getUnknownFields (line 781) | @java.lang.Override
      method ChunkProto (line 786) | private ChunkProto(
      method getDescriptor (line 871) | public static final com.google.protobuf.Descriptors.Descriptor
      method internalGetFieldAccessorTable (line 876) | @java.lang.Override
      type HeaderProtoOrBuilder (line 884) | public interface HeaderProtoOrBuilder extends
        method getEncodeTaskId (line 896) | long getEncodeTaskId();
        method getPtoId (line 906) | int getPtoId();
        method getStepId (line 916) | int getStepId();
        method getExtraInfo (line 926) | long getExtraInfo();
        method getSenderId (line 936) | int getSenderId();
        method getReceiverId (line 946) | int getReceiverId();
      class HeaderProto (line 955) | public static final class HeaderProto extends
        method HeaderProto (line 961) | private HeaderProto(com.google.protobuf.GeneratedMessageV3.Builder...
        method HeaderProto (line 964) | private HeaderProto() {
        method newInstance (line 967) | @java.lang.Override
        method getUnknownFields (line 974) | @java.lang.Override
        method HeaderProto (line 979) | private HeaderProto(
        method getDescriptor (line 1048) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 1053) | @java.lang.Override
        method getEncodeTaskId (line 1071) | @java.lang.Override
        method getPtoId (line 1086) | @java.lang.Override
        method getStepId (line 1101) | @java.lang.Override
        method getExtraInfo (line 1116) | @java.lang.Override
        method getSenderId (line 1131) | @java.lang.Override
        method getReceiverId (line 1146) | @java.lang.Override
        method isInitialized (line 1152) | @java.lang.Override
        method writeTo (line 1162) | @java.lang.Override
        method getSerializedSize (line 1186) | @java.lang.Override
        method equals (line 1221) | @java.lang.Override
        method hashCode (line 1247) | @java.lang.Override
        method parseFrom (line 1273) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1278) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1284) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1289) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1295) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1299) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1305) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1310) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseDelimitedFrom (line 1317) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseDelimitedFrom (line 1322) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1329) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 1335) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method newBuilderForType (line 1343) | @java.lang.Override
        method newBuilder (line 1345) | public static Builder newBuilder() {
        method newBuilder (line 1348) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl...
        method toBuilder (line 1351) | @java.lang.Override
        method newBuilderForType (line 1357) | @java.lang.Override
        class Builder (line 1370) | public static final class Builder extends
          method getDescriptor (line 1374) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 1379) | @java.lang.Override
          method Builder (line 1388) | private Builder() {
          method Builder (line 1392) | private Builder(
          method maybeForceBuilderInitialization (line 1397) | private void maybeForceBuilderInitialization() {
          method clear (line 1402) | @java.lang.Override
          method getDescriptorForType (line 1420) | @java.lang.Override
          method getDefaultInstanceForType (line 1426) | @java.lang.Override
          method build (line 1431) | @java.lang.Override
          method buildPartial (line 1440) | @java.lang.Override
          method clone (line 1453) | @java.lang.Override
          method setField (line 1457) | @java.lang.Override
          method clearField (line 1463) | @java.lang.Override
          method clearOneof (line 1468) | @java.lang.Override
          method setRepeatedField (line 1473) | @java.lang.Override
          method addRepeatedField (line 1479) | @java.lang.Override
          method mergeFrom (line 1485) | @java.lang.Override
          method mergeFrom (line 1495) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty...
          method isInitialized (line 1520) | @java.lang.Override
          method mergeFrom (line 1525) | @java.lang.Override
          method getEncodeTaskId (line 1553) | @java.lang.Override
          method setEncodeTaskId (line 1566) | public Builder setEncodeTaskId(long value) {
          method clearEncodeTaskId (line 1580) | public Builder clearEncodeTaskId() {
          method getPtoId (line 1596) | @java.lang.Override
          method setPtoId (line 1609) | public Builder setPtoId(int value) {
          method clearPtoId (line 1623) | public Builder clearPtoId() {
          method getStepId (line 1639) | @java.lang.Override
          method setStepId (line 1652) | public Builder setStepId(int value) {
          method clearStepId (line 1666) | public Builder clearStepId() {
          method getExtraInfo (line 1682) | @java.lang.Override
          method setExtraInfo (line 1695) | public Builder setExtraInfo(long value) {
          method clearExtraInfo (line 1709) | public Builder clearExtraInfo() {
          method getSenderId (line 1725) | @java.lang.Override
          method setSenderId (line 1738) | public Builder setSenderId(int value) {
          method clearSenderId (line 1752) | public Builder clearSenderId() {
          method getReceiverId (line 1768) | @java.lang.Override
          method setReceiverId (line 1781) | public Builder setReceiverId(int value) {
          method clearReceiverId (line 1795) | public Builder clearReceiverId() {
          method setUnknownFields (line 1801) | @java.lang.Override
          method mergeUnknownFields (line 1807) | @java.lang.Override
        method getDefaultInstance (line 1823) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parsePartialFrom (line 1829) | @java.lang.Override
        method parser (line 1838) | public static com.google.protobuf.Parser<HeaderProto> parser() {
        method getParserForType (line 1842) | @java.lang.Override
        method getDefaultInstanceForType (line 1847) | @java.lang.Override
      type TypeProtoOrBuilder (line 1854) | public interface TypeProtoOrBuilder extends
        method getTypeId (line 1866) | int getTypeId();
      class TypeProto (line 1875) | public static final class TypeProto extends
        method TypeProto (line 1881) | private TypeProto(com.google.protobuf.GeneratedMessageV3.Builder<?...
        method TypeProto (line 1884) | private TypeProto() {
        method newInstance (line 1887) | @java.lang.Override
        method getUnknownFields (line 1894) | @java.lang.Override
        method TypeProto (line 1899) | private TypeProto(
        method getDescriptor (line 1943) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 1948) | @java.lang.Override
        method getTypeId (line 1966) | @java.lang.Override
        method isInitialized (line 1972) | @java.lang.Override
        method writeTo (line 1982) | @java.lang.Override
        method getSerializedSize (line 1991) | @java.lang.Override
        method equals (line 2006) | @java.lang.Override
        method hashCode (line 2022) | @java.lang.Override
        method parseFrom (line 2036) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2041) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2047) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2052) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2058) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2062) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2068) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2073) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseDelimitedFrom (line 2080) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseDelimitedFrom (line 2085) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2092) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parseFrom (line 2098) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method newBuilderForType (line 2106) | @java.lang.Override
        method newBuilder (line 2108) | public static Builder newBuilder() {
        method newBuilder (line 2111) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl...
        method toBuilder (line 2114) | @java.lang.Override
        method newBuilderForType (line 2120) | @java.lang.Override
        class Builder (line 2133) | public static final class Builder extends
          method getDescriptor (line 2137) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 2142) | @java.lang.Override
          method Builder (line 2151) | private Builder() {
          method Builder (line 2155) | private Builder(
          method maybeForceBuilderInitialization (line 2160) | private void maybeForceBuilderInitialization() {
          method clear (line 2165) | @java.lang.Override
          method getDescriptorForType (line 2173) | @java.lang.Override
          method getDefaultInstanceForType (line 2179) | @java.lang.Override
          method build (line 2184) | @java.lang.Override
          method buildPartial (line 2193) | @java.lang.Override
          method clone (line 2201) | @java.lang.Override
          method setField (line 2205) | @java.lang.Override
          method clearField (line 2211) | @java.lang.Override
          method clearOneof (line 2216) | @java.lang.Override
          method setRepeatedField (line 2221) | @java.lang.Override
          method addRepeatedField (line 2227) | @java.lang.Override
          method mergeFrom (line 2233) | @java.lang.Override
          method mergeFrom (line 2243) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty...
          method isInitialized (line 2253) | @java.lang.Override
          method mergeFrom (line 2258) | @java.lang.Override
          method getTypeId (line 2286) | @java.lang.Override
          method setTypeId (line 2299) | public Builder setTypeId(int value) {
          method clearTypeId (line 2313) | public Builder clearTypeId() {
          method setUnknownFields (line 2319) | @java.lang.Override
          method mergeUnknownFields (line 2325) | @java.lang.Override
        method getDefaultInstance (line 2341) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Rob...
        method parsePartialFrom (line 2347) | @java.lang.Override
        method parser (line 2356) | public static com.google.protobuf.Parser<TypeProto> parser() {
        method getParserForType (line 2360) | @java.lang.Override
        method getDefaultInstanceForType (line 2365) | @java.lang.Override
      method hasHeaderProto (line 2382) | @java.lang.Override
      method getHeaderProto (line 2394) | @java.lang.Override
      method getHeaderProtoOrBuilder (line 2405) | @java.lang.Override
      method hasTypeProto (line 2420) | @java.lang.Override
      method getTypeProto (line 2432) | @java.lang.Override
      method getTypeProtoOrBuilder (line 2443) | @java.lang.Override
      method getChunkIndex (line 2458) | @java.lang.Override
      method getTotalChunks (line 2473) | @java.lang.Override
      method getChunkData (line 2488) | @java.lang.Override
      method getTotalBytes (line 2505) | @java.lang.Override
      method isInitialized (line 2511) | @java.lang.Override
      method writeTo (line 2521) | @java.lang.Override
      method getSerializedSize (line 2545) | @java.lang.Override
      method equals (line 2580) | @java.lang.Override
      method hashCode (line 2612) | @java.lang.Override
      method parseFrom (line 2641) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2646) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2652) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2657) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2663) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2667) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2673) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2678) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseDelimitedFrom (line 2685) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseDelimitedFrom (line 2690) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2697) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parseFrom (line 2703) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method newBuilderForType (line 2711) | @java.lang.Override
      method newBuilder (line 2713) | public static Builder newBuilder() {
      method newBuilder (line 2716) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl.n...
      method toBuilder (line 2719) | @java.lang.Override
      method newBuilderForType (line 2725) | @java.lang.Override
      class Builder (line 2740) | public static final class Builder extends
        method getDescriptor (line 2744) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 2749) | @java.lang.Override
        method Builder (line 2758) | private Builder() {
        method Builder (line 2762) | private Builder(
        method maybeForceBuilderInitialization (line 2767) | private void maybeForceBuilderInitialization() {
        method clear (line 2772) | @java.lang.Override
        method getDescriptorForType (line 2798) | @java.lang.Override
        method getDefaultInstanceForType (line 2804) | @java.lang.Override
        method build (line 2809) | @java.lang.Override
        method buildPartial (line 2818) | @java.lang.Override
        method clone (line 2839) | @java.lang.Override
        method setField (line 2843) | @java.lang.Override
        method clearField (line 2849) | @java.lang.Override
        method clearOneof (line 2854) | @java.lang.Override
        method setRepeatedField (line 2859) | @java.lang.Override
        method addRepeatedField (line 2865) | @java.lang.Override
        method mergeFrom (line 2871) | @java.lang.Override
        method mergeFrom (line 2881) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty.p...
        method isInitialized (line 2906) | @java.lang.Override
        method mergeFrom (line 2911) | @java.lang.Override
        method hasHeaderProto (line 2941) | public boolean hasHeaderProto() {
        method getHeaderProto (line 2952) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method setHeaderProto (line 2966) | public Builder setHeaderProto(edu.alibaba.mpc4j.common.rpc.impl.ne...
        method setHeaderProto (line 2986) | public Builder setHeaderProto(
        method mergeHeaderProto (line 3004) | public Builder mergeHeaderProto(edu.alibaba.mpc4j.common.rpc.impl....
        method clearHeaderProto (line 3026) | public Builder clearHeaderProto() {
        method getHeaderProtoBuilder (line 3044) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getHeaderProtoOrBuilder (line 3056) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getHeaderProtoFieldBuilder (line 3071) | private com.google.protobuf.SingleFieldBuilderV3<
        method hasTypeProto (line 3096) | public boolean hasTypeProto() {
        method getTypeProto (line 3107) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method setTypeProto (line 3121) | public Builder setTypeProto(edu.alibaba.mpc4j.common.rpc.impl.nett...
        method setTypeProto (line 3141) | public Builder setTypeProto(
        method mergeTypeProto (line 3159) | public Builder mergeTypeProto(edu.alibaba.mpc4j.common.rpc.impl.ne...
        method clearTypeProto (line 3181) | public Builder clearTypeProto() {
        method getTypeProtoBuilder (line 3199) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getTypeProtoOrBuilder (line 3211) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustNett...
        method getTypeProtoFieldBuilder (line 3226) | private com.google.protobuf.SingleFieldBuilderV3<
        method getChunkIndex (line 3249) | @java.lang.Override
        method setChunkIndex (line 3262) | public Builder setChunkIndex(int value) {
        method clearChunkIndex (line 3276) | public Builder clearChunkIndex() {
        method getTotalChunks (line 3292) | @java.lang.Override
        method setTotalChunks (line 3305) | public Builder setTotalChunks(int value) {
        method clearTotalChunks (line 3319) | public Builder clearTotalChunks() {
        method getChunkData (line 3335) | @java.lang.Override
        method setChunkData (line 3348) | public Builder setChunkData(com.google.protobuf.ByteString value) {
        method clearChunkData (line 3365) | public Builder clearChunkData() {
        method getTotalBytes (line 3383) | @java.lang.Override
        method setTotalBytes (line 3398) | public Builder setTotalBytes(long value) {
        method clearTotalBytes (line 3414) | public Builder clearTotalBytes() {
        method setUnknownFields (line 3420) | @java.lang.Override
        method mergeUnknownFields (line 3426) | @java.lang.Override
      method getDefaultInstance (line 3442) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Robus...
      method parsePartialFrom (line 3448) | @java.lang.Override
      method parser (line 3457) | public static com.google.protobuf.Parser<ChunkProto> parser() {
      method getParserForType (line 3461) | @java.lang.Override
      method getDefaultInstanceForType (line 3466) | @java.lang.Override
    method getDescriptor (line 3494) | public static com.google.protobuf.Descriptors.FileDescriptor

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/SimpleNettyRpcProtobuf.java
  class SimpleNettyRpcProtobuf (line 6) | public final class SimpleNettyRpcProtobuf {
    method SimpleNettyRpcProtobuf (line 7) | private SimpleNettyRpcProtobuf() {}
    method registerAllExtensions (line 8) | public static void registerAllExtensions(
    method registerAllExtensions (line 12) | public static void registerAllExtensions(
    type DataPacketProtoOrBuilder (line 17) | public interface DataPacketProtoOrBuilder extends
      method hasHeaderProto (line 29) | boolean hasHeaderProto();
      method getHeaderProto (line 38) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
      method getHeaderProtoOrBuilder (line 46) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
      method hasTypeProto (line 52) | boolean hasTypeProto();
      method getTypeProto (line 57) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
      method getTypeProtoOrBuilder (line 61) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
      method hasPayloadProto (line 67) | boolean hasPayloadProto();
      method getPayloadProto (line 72) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
      method getPayloadProtoOrBuilder (line 76) | edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNettyRpcProto...
    class DataPacketProto (line 81) | public static final class DataPacketProto extends
      method DataPacketProto (line 87) | private DataPacketProto(com.google.protobuf.GeneratedMessageV3.Build...
      method DataPacketProto (line 90) | private DataPacketProto() {
      method newInstance (line 93) | @java.lang.Override
      method getUnknownFields (line 100) | @java.lang.Override
      method DataPacketProto (line 105) | private DataPacketProto(
      method getDescriptor (line 183) | public static final com.google.protobuf.Descriptors.Descriptor
      method internalGetFieldAccessorTable (line 188) | @java.lang.Override
      type HeaderProtoOrBuilder (line 196) | public interface HeaderProtoOrBuilder extends
        method getEncodeTaskId (line 208) | long getEncodeTaskId();
        method getPtoId (line 218) | int getPtoId();
        method getStepId (line 228) | int getStepId();
        method getExtraInfo (line 238) | long getExtraInfo();
        method getSenderId (line 248) | int getSenderId();
        method getReceiverId (line 258) | int getReceiverId();
      class HeaderProto (line 267) | public static final class HeaderProto extends
        method HeaderProto (line 273) | private HeaderProto(com.google.protobuf.GeneratedMessageV3.Builder...
        method HeaderProto (line 276) | private HeaderProto() {
        method newInstance (line 279) | @java.lang.Override
        method getUnknownFields (line 286) | @java.lang.Override
        method HeaderProto (line 291) | private HeaderProto(
        method getDescriptor (line 360) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 365) | @java.lang.Override
        method getEncodeTaskId (line 383) | @java.lang.Override
        method getPtoId (line 398) | @java.lang.Override
        method getStepId (line 413) | @java.lang.Override
        method getExtraInfo (line 428) | @java.lang.Override
        method getSenderId (line 443) | @java.lang.Override
        method getReceiverId (line 458) | @java.lang.Override
        method isInitialized (line 464) | @java.lang.Override
        method writeTo (line 474) | @java.lang.Override
        method getSerializedSize (line 498) | @java.lang.Override
        method equals (line 533) | @java.lang.Override
        method hashCode (line 559) | @java.lang.Override
        method parseFrom (line 585) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 590) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 596) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 601) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 607) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 611) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 617) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 622) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 629) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 634) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 641) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 647) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method newBuilderForType (line 655) | @java.lang.Override
        method newBuilder (line 657) | public static Builder newBuilder() {
        method newBuilder (line 660) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl...
        method toBuilder (line 663) | @java.lang.Override
        method newBuilderForType (line 669) | @java.lang.Override
        class Builder (line 682) | public static final class Builder extends
          method getDescriptor (line 686) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 691) | @java.lang.Override
          method Builder (line 700) | private Builder() {
          method Builder (line 704) | private Builder(
          method maybeForceBuilderInitialization (line 709) | private void maybeForceBuilderInitialization() {
          method clear (line 714) | @java.lang.Override
          method getDescriptorForType (line 732) | @java.lang.Override
          method getDefaultInstanceForType (line 738) | @java.lang.Override
          method build (line 743) | @java.lang.Override
          method buildPartial (line 752) | @java.lang.Override
          method clone (line 765) | @java.lang.Override
          method setField (line 769) | @java.lang.Override
          method clearField (line 775) | @java.lang.Override
          method clearOneof (line 780) | @java.lang.Override
          method setRepeatedField (line 785) | @java.lang.Override
          method addRepeatedField (line 791) | @java.lang.Override
          method mergeFrom (line 797) | @java.lang.Override
          method mergeFrom (line 807) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty...
          method isInitialized (line 832) | @java.lang.Override
          method mergeFrom (line 837) | @java.lang.Override
          method getEncodeTaskId (line 865) | @java.lang.Override
          method setEncodeTaskId (line 878) | public Builder setEncodeTaskId(long value) {
          method clearEncodeTaskId (line 892) | public Builder clearEncodeTaskId() {
          method getPtoId (line 908) | @java.lang.Override
          method setPtoId (line 921) | public Builder setPtoId(int value) {
          method clearPtoId (line 935) | public Builder clearPtoId() {
          method getStepId (line 951) | @java.lang.Override
          method setStepId (line 964) | public Builder setStepId(int value) {
          method clearStepId (line 978) | public Builder clearStepId() {
          method getExtraInfo (line 994) | @java.lang.Override
          method setExtraInfo (line 1007) | public Builder setExtraInfo(long value) {
          method clearExtraInfo (line 1021) | public Builder clearExtraInfo() {
          method getSenderId (line 1037) | @java.lang.Override
          method setSenderId (line 1050) | public Builder setSenderId(int value) {
          method clearSenderId (line 1064) | public Builder clearSenderId() {
          method getReceiverId (line 1080) | @java.lang.Override
          method setReceiverId (line 1093) | public Builder setReceiverId(int value) {
          method clearReceiverId (line 1107) | public Builder clearReceiverId() {
          method setUnknownFields (line 1113) | @java.lang.Override
          method mergeUnknownFields (line 1119) | @java.lang.Override
        method getDefaultInstance (line 1135) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parsePartialFrom (line 1141) | @java.lang.Override
        method parser (line 1150) | public static com.google.protobuf.Parser<HeaderProto> parser() {
        method getParserForType (line 1154) | @java.lang.Override
        method getDefaultInstanceForType (line 1159) | @java.lang.Override
      type TypeProtoOrBuilder (line 1166) | public interface TypeProtoOrBuilder extends
        method getTypeId (line 1178) | int getTypeId();
      class TypeProto (line 1187) | public static final class TypeProto extends
        method TypeProto (line 1193) | private TypeProto(com.google.protobuf.GeneratedMessageV3.Builder<?...
        method TypeProto (line 1196) | private TypeProto() {
        method newInstance (line 1199) | @java.lang.Override
        method getUnknownFields (line 1206) | @java.lang.Override
        method TypeProto (line 1211) | private TypeProto(
        method getDescriptor (line 1255) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 1260) | @java.lang.Override
        method getTypeId (line 1278) | @java.lang.Override
        method isInitialized (line 1284) | @java.lang.Override
        method writeTo (line 1294) | @java.lang.Override
        method getSerializedSize (line 1303) | @java.lang.Override
        method equals (line 1318) | @java.lang.Override
        method hashCode (line 1334) | @java.lang.Override
        method parseFrom (line 1348) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1353) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1359) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1364) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1370) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1374) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1380) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1385) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 1392) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 1397) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1404) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1410) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method newBuilderForType (line 1418) | @java.lang.Override
        method newBuilder (line 1420) | public static Builder newBuilder() {
        method newBuilder (line 1423) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl...
        method toBuilder (line 1426) | @java.lang.Override
        method newBuilderForType (line 1432) | @java.lang.Override
        class Builder (line 1445) | public static final class Builder extends
          method getDescriptor (line 1449) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 1454) | @java.lang.Override
          method Builder (line 1463) | private Builder() {
          method Builder (line 1467) | private Builder(
          method maybeForceBuilderInitialization (line 1472) | private void maybeForceBuilderInitialization() {
          method clear (line 1477) | @java.lang.Override
          method getDescriptorForType (line 1485) | @java.lang.Override
          method getDefaultInstanceForType (line 1491) | @java.lang.Override
          method build (line 1496) | @java.lang.Override
          method buildPartial (line 1505) | @java.lang.Override
          method clone (line 1513) | @java.lang.Override
          method setField (line 1517) | @java.lang.Override
          method clearField (line 1523) | @java.lang.Override
          method clearOneof (line 1528) | @java.lang.Override
          method setRepeatedField (line 1533) | @java.lang.Override
          method addRepeatedField (line 1539) | @java.lang.Override
          method mergeFrom (line 1545) | @java.lang.Override
          method mergeFrom (line 1555) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty...
          method isInitialized (line 1565) | @java.lang.Override
          method mergeFrom (line 1570) | @java.lang.Override
          method getTypeId (line 1598) | @java.lang.Override
          method setTypeId (line 1611) | public Builder setTypeId(int value) {
          method clearTypeId (line 1625) | public Builder clearTypeId() {
          method setUnknownFields (line 1631) | @java.lang.Override
          method mergeUnknownFields (line 1637) | @java.lang.Override
        method getDefaultInstance (line 1653) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parsePartialFrom (line 1659) | @java.lang.Override
        method parser (line 1668) | public static com.google.protobuf.Parser<TypeProto> parser() {
        method getParserForType (line 1672) | @java.lang.Override
        method getDefaultInstanceForType (line 1677) | @java.lang.Override
      type PayloadProtoOrBuilder (line 1684) | public interface PayloadProtoOrBuilder extends
        method getPayloadBytesList (line 1696) | java.util.List<com.google.protobuf.ByteString> getPayloadBytesList();
        method getPayloadBytesCount (line 1705) | int getPayloadBytesCount();
        method getPayloadBytes (line 1715) | com.google.protobuf.ByteString getPayloadBytes(int index);
      class PayloadProto (line 1724) | public static final class PayloadProto extends
        method PayloadProto (line 1730) | private PayloadProto(com.google.protobuf.GeneratedMessageV3.Builde...
        method PayloadProto (line 1733) | private PayloadProto() {
        method newInstance (line 1737) | @java.lang.Override
        method getUnknownFields (line 1744) | @java.lang.Override
        method PayloadProto (line 1749) | private PayloadProto(
        method getDescriptor (line 1800) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 1805) | @java.lang.Override
        method getPayloadBytesList (line 1823) | @java.lang.Override
        method getPayloadBytesCount (line 1836) | public int getPayloadBytesCount() {
        method getPayloadBytes (line 1848) | public com.google.protobuf.ByteString getPayloadBytes(int index) {
        method isInitialized (line 1853) | @java.lang.Override
        method writeTo (line 1863) | @java.lang.Override
        method getSerializedSize (line 1872) | @java.lang.Override
        method equals (line 1892) | @java.lang.Override
        method hashCode (line 1908) | @java.lang.Override
        method parseFrom (line 1924) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1929) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1935) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1940) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1946) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1950) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1956) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1961) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 1968) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseDelimitedFrom (line 1973) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1980) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parseFrom (line 1986) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method newBuilderForType (line 1994) | @java.lang.Override
        method newBuilder (line 1996) | public static Builder newBuilder() {
        method newBuilder (line 1999) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl...
        method toBuilder (line 2002) | @java.lang.Override
        method newBuilderForType (line 2008) | @java.lang.Override
        class Builder (line 2021) | public static final class Builder extends
          method getDescriptor (line 2025) | public static final com.google.protobuf.Descriptors.Descriptor
          method internalGetFieldAccessorTable (line 2030) | @java.lang.Override
          method Builder (line 2039) | private Builder() {
          method Builder (line 2043) | private Builder(
          method maybeForceBuilderInitialization (line 2048) | private void maybeForceBuilderInitialization() {
          method clear (line 2053) | @java.lang.Override
          method getDescriptorForType (line 2061) | @java.lang.Override
          method getDefaultInstanceForType (line 2067) | @java.lang.Override
          method build (line 2072) | @java.lang.Override
          method buildPartial (line 2081) | @java.lang.Override
          method clone (line 2094) | @java.lang.Override
          method setField (line 2098) | @java.lang.Override
          method clearField (line 2104) | @java.lang.Override
          method clearOneof (line 2109) | @java.lang.Override
          method setRepeatedField (line 2114) | @java.lang.Override
          method addRepeatedField (line 2120) | @java.lang.Override
          method mergeFrom (line 2126) | @java.lang.Override
          method mergeFrom (line 2136) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty...
          method isInitialized (line 2153) | @java.lang.Override
          method mergeFrom (line 2158) | @java.lang.Override
          method ensurePayloadBytesIsMutable (line 2179) | private void ensurePayloadBytesIsMutable() {
          method getPayloadBytesList (line 2193) | public java.util.List<com.google.protobuf.ByteString>
          method getPayloadBytesCount (line 2206) | public int getPayloadBytesCount() {
          method getPayloadBytes (line 2218) | public com.google.protobuf.ByteString getPayloadBytes(int index) {
          method setPayloadBytes (line 2231) | public Builder setPayloadBytes(
          method addPayloadBytes (line 2250) | public Builder addPayloadBytes(com.google.protobuf.ByteString va...
          method addAllPayloadBytes (line 2268) | public Builder addAllPayloadBytes(
          method clearPayloadBytes (line 2284) | public Builder clearPayloadBytes() {
          method setUnknownFields (line 2290) | @java.lang.Override
          method mergeUnknownFields (line 2296) | @java.lang.Override
        method getDefaultInstance (line 2312) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Sim...
        method parsePartialFrom (line 2318) | @java.lang.Override
        method parser (line 2327) | public static com.google.protobuf.Parser<PayloadProto> parser() {
        method getParserForType (line 2331) | @java.lang.Override
        method getDefaultInstanceForType (line 2336) | @java.lang.Override
      method hasHeaderProto (line 2353) | @java.lang.Override
      method getHeaderProto (line 2365) | @java.lang.Override
      method getHeaderProtoOrBuilder (line 2376) | @java.lang.Override
      method hasTypeProto (line 2387) | @java.lang.Override
      method getTypeProto (line 2395) | @java.lang.Override
      method getTypeProtoOrBuilder (line 2402) | @java.lang.Override
      method hasPayloadProto (line 2413) | @java.lang.Override
      method getPayloadProto (line 2421) | @java.lang.Override
      method getPayloadProtoOrBuilder (line 2428) | @java.lang.Override
      method isInitialized (line 2434) | @java.lang.Override
      method writeTo (line 2444) | @java.lang.Override
      method getSerializedSize (line 2459) | @java.lang.Override
      method equals (line 2482) | @java.lang.Override
      method hashCode (line 2511) | @java.lang.Override
      method parseFrom (line 2535) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2540) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2546) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2551) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2557) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2561) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2567) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2572) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseDelimitedFrom (line 2579) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseDelimitedFrom (line 2584) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2591) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parseFrom (line 2597) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method newBuilderForType (line 2605) | @java.lang.Override
      method newBuilder (line 2607) | public static Builder newBuilder() {
      method newBuilder (line 2610) | public static Builder newBuilder(edu.alibaba.mpc4j.common.rpc.impl.n...
      method toBuilder (line 2613) | @java.lang.Override
      method newBuilderForType (line 2619) | @java.lang.Override
      class Builder (line 2628) | public static final class Builder extends
        method getDescriptor (line 2632) | public static final com.google.protobuf.Descriptors.Descriptor
        method internalGetFieldAccessorTable (line 2637) | @java.lang.Override
        method Builder (line 2646) | private Builder() {
        method Builder (line 2650) | private Builder(
        method maybeForceBuilderInitialization (line 2655) | private void maybeForceBuilderInitialization() {
        method clear (line 2660) | @java.lang.Override
        method getDescriptorForType (line 2684) | @java.lang.Override
        method getDefaultInstanceForType (line 2690) | @java.lang.Override
        method build (line 2695) | @java.lang.Override
        method buildPartial (line 2704) | @java.lang.Override
        method clone (line 2726) | @java.lang.Override
        method setField (line 2730) | @java.lang.Override
        method clearField (line 2736) | @java.lang.Override
        method clearOneof (line 2741) | @java.lang.Override
        method setRepeatedField (line 2746) | @java.lang.Override
        method addRepeatedField (line 2752) | @java.lang.Override
        method mergeFrom (line 2758) | @java.lang.Override
        method mergeFrom (line 2768) | public Builder mergeFrom(edu.alibaba.mpc4j.common.rpc.impl.netty.p...
        method isInitialized (line 2784) | @java.lang.Override
        method mergeFrom (line 2789) | @java.lang.Override
        method hasHeaderProto (line 2819) | public boolean hasHeaderProto() {
        method getHeaderProto (line 2830) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method setHeaderProto (line 2844) | public Builder setHeaderProto(edu.alibaba.mpc4j.common.rpc.impl.ne...
        method setHeaderProto (line 2864) | public Builder setHeaderProto(
        method mergeHeaderProto (line 2882) | public Builder mergeHeaderProto(edu.alibaba.mpc4j.common.rpc.impl....
        method clearHeaderProto (line 2904) | public Builder clearHeaderProto() {
        method getHeaderProtoBuilder (line 2922) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getHeaderProtoOrBuilder (line 2934) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getHeaderProtoFieldBuilder (line 2949) | private com.google.protobuf.SingleFieldBuilderV3<
        method hasTypeProto (line 2970) | public boolean hasTypeProto() {
        method getTypeProto (line 2977) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method setTypeProto (line 2987) | public Builder setTypeProto(edu.alibaba.mpc4j.common.rpc.impl.nett...
        method setTypeProto (line 3003) | public Builder setTypeProto(
        method mergeTypeProto (line 3017) | public Builder mergeTypeProto(edu.alibaba.mpc4j.common.rpc.impl.ne...
        method clearTypeProto (line 3035) | public Builder clearTypeProto() {
        method getTypeProtoBuilder (line 3049) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getTypeProtoOrBuilder (line 3057) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getTypeProtoFieldBuilder (line 3068) | private com.google.protobuf.SingleFieldBuilderV3<
        method hasPayloadProto (line 3089) | public boolean hasPayloadProto() {
        method getPayloadProto (line 3096) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method setPayloadProto (line 3106) | public Builder setPayloadProto(edu.alibaba.mpc4j.common.rpc.impl.n...
        method setPayloadProto (line 3122) | public Builder setPayloadProto(
        method mergePayloadProto (line 3136) | public Builder mergePayloadProto(edu.alibaba.mpc4j.common.rpc.impl...
        method clearPayloadProto (line 3154) | public Builder clearPayloadProto() {
        method getPayloadProtoBuilder (line 3168) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getPayloadProtoOrBuilder (line 3176) | public edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.SimpleNett...
        method getPayloadProtoFieldBuilder (line 3187) | private com.google.protobuf.SingleFieldBuilderV3<
        method setUnknownFields (line 3200) | @java.lang.Override
        method mergeUnknownFields (line 3206) | @java.lang.Override
      method getDefaultInstance (line 3222) | public static edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.Simpl...
      method parsePartialFrom (line 3228) | @java.lang.Override
      method parser (line 3237) | public static com.google.protobuf.Parser<DataPacketProto> parser() {
      method getParserForType (line 3241) | @java.lang.Override
      method getDefaultInstanceForType (line 3246) | @java.lang.Override
    method getDescriptor (line 3274) | public static com.google.protobuf.Descriptors.FileDescriptor

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustChunkAssembler.java
  class RobustChunkAssembler (line 46) | class RobustChunkAssembler {
    class AssembleState (line 62) | private static class AssembleState {
      method AssembleState (line 80) | AssembleState(int totalBytes, int totalChunks) {
    method RobustChunkAssembler (line 99) | RobustChunkAssembler() {
    method serialize (line 117) | static byte[] serialize(PayloadType payloadType, List<byte[]> payload) {
    method addChunk (line 153) | DataPacket addChunk(ChunkProto chunk) {
    method deserialize (line 203) | private static DataPacket deserialize(ChunkProto chunk, byte[] fullDat...
    method deserializeNormal (line 231) | private static List<byte[]> deserializeNormal(byte[] fullData) throws ...
    method deserializeEqualSize (line 246) | private static List<byte[]> deserializeEqualSize(byte[] fullData) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataReceiveHandler.java
  class RobustDataReceiveHandler (line 44) | @ChannelHandler.Sharable
    method RobustDataReceiveHandler (line 56) | RobustDataReceiveHandler(
    method channelRead (line 64) | @Override
    method handleChunk (line 81) | private void handleChunk(ChunkProto chunk) {
    method channelReadComplete (line 90) | @Override
    method exceptionCaught (line 95) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataReceiveThread.java
  class RobustDataReceiveThread (line 43) | public class RobustDataReceiveThread extends Thread {
    method RobustDataReceiveThread (line 82) | RobustDataReceiveThread(
    method run (line 97) | @Override
    method close (line 153) | public void close() throws InterruptedException {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataSendHandler.java
  class RobustDataSendHandler (line 30) | @ChannelHandler.Sharable
    method channelActive (line 34) | @Override
    method channelRead (line 39) | @Override
    method exceptionCaught (line 44) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataSendManager.java
  class RobustDataSendManager (line 45) | public class RobustDataSendManager {
    method RobustDataSendManager (line 81) | RobustDataSendManager(ChannelHandler extraHandler) {
    method sendChunk (line 131) | void sendChunk(NettyParty receiver, ChunkProto chunk) {
    method sendMessageWithRetry (line 162) | private void sendMessageWithRetry(
    method retryOrFail (line 205) | private void retryOrFail(
    method close (line 235) | void close() {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyPtoDesc.java
  class RobustNettyPtoDesc (line 12) | class RobustNettyPtoDesc implements PtoDesc {
    type StepEnum (line 25) | enum StepEnum {
    method RobustNettyPtoDesc (line 64) | private RobustNettyPtoDesc() {
    method getInstance (line 68) | public static PtoDesc getInstance() {
    method getPtoId (line 76) | @Override
    method getPtoName (line 81) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpc.java
  class RobustNettyRpc (line 42) | public class RobustNettyRpc implements Rpc {
    method RobustNettyRpc (line 103) | public RobustNettyRpc(NettyParty ownParty, Set<NettyParty> partySet) {
    method RobustNettyRpc (line 114) | public RobustNettyRpc(NettyParty ownParty, Set<NettyParty> partySet, C...
    method testPortInUse (line 139) | private void testPortInUse(int port) {
    method ownParty (line 148) | @Override
    method getPartySet (line 153) | @Override
    method getParty (line 158) | @Override
    method connect (line 164) | @Override
    method receiveWithSleep (line 242) | private DataPacket receiveWithSleep(DataPacketHeader header) {
    method send (line 255) | @Override
    method sendInChunks (line 283) | private void sendInChunks(DataPacket dataPacket) {
    method receive (line 320) | @Override
    method receiveAny (line 333) | @Override
    method getPayloadByteLength (line 343) | @Override
    method getSendByteLength (line 348) | @Override
    method getSendDataPacketNum (line 353) | @Override
    method reset (line 358) | @Override
    method synchronize (line 365) | @Override
    method disconnect (line 395) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpcManager.java
  class RobustNettyRpcManager (line 24) | public class RobustNettyRpcManager implements RpcManager {
    method RobustNettyRpcManager (line 49) | public RobustNettyRpcManager(int partyNum, int startPort) {
    method RobustNettyRpcManager (line 60) | public RobustNettyRpcManager(int partyNum, int startPort, ChannelHandl...
    method getRpc (line 78) | @Override
    method getPartyName (line 86) | private String getPartyName(int partyId) {
    method getPartyNum (line 90) | @Override
    method getPartySet (line 95) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataReceiveHandler.java
  class SimpleDataReceiveHandler (line 40) | @ChannelHandler.Sharable
    method SimpleDataReceiveHandler (line 48) | SimpleDataReceiveHandler(DataPacketBuffer dataPacketBuffer) {
    method channelRead (line 52) | @Override
    method channelReadComplete (line 84) | @Override
    method exceptionCaught (line 89) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataReceiveThread.java
  class SimpleDataReceiveThread (line 36) | public class SimpleDataReceiveThread extends Thread {
    method SimpleDataReceiveThread (line 69) | public SimpleDataReceiveThread(NettyParty ownParty, CyclicBarrier cycl...
    method run (line 78) | @Override
    method close (line 135) | public void close() throws InterruptedException {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataSendHandler.java
  class SimpleDataSendHandler (line 26) | @ChannelHandler.Sharable
    method channelActive (line 30) | @Override
    method channelRead (line 35) | @Override
    method exceptionCaught (line 40) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataSendManager.java
  class SimpleDataSendManager (line 37) | public class SimpleDataSendManager {
    method SimpleDataSendManager (line 63) | public SimpleDataSendManager() {
    method sendData (line 109) | public void sendData(NettyParty receiver, SimpleNettyRpcProtobuf.DataP...
    method close (line 155) | public void close() {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyPtoDesc.java
  class SimpleNettyPtoDesc (line 12) | class SimpleNettyPtoDesc implements PtoDesc {
    type StepEnum (line 25) | enum StepEnum {
    method SimpleNettyPtoDesc (line 64) | private SimpleNettyPtoDesc() {
    method getInstance (line 68) | public static PtoDesc getInstance() {
    method getPtoId (line 76) | @Override
    method getPtoName (line 81) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpc.java
  class SimpleNettyRpc (line 38) | public class SimpleNettyRpc implements Rpc {
    method SimpleNettyRpc (line 90) | public SimpleNettyRpc(NettyParty ownParty, Set<NettyParty> partySet) {
    method testPortInUse (line 118) | private void testPortInUse(int port) {
    method ownParty (line 127) | @Override
    method getPartySet (line 132) | @Override
    method getParty (line 137) | @Override
    method connect (line 143) | @Override
    method receiveWithSleep (line 237) | private DataPacket receiveWithSleep(DataPacketHeader header) {
    method send (line 254) | @Override
    method receive (line 314) | @Override
    method receiveAny (line 332) | @Override
    method getPayloadByteLength (line 341) | @Override
    method getSendByteLength (line 346) | @Override
    method getSendDataPacketNum (line 351) | @Override
    method reset (line 356) | @Override
    method synchronize (line 363) | @Override
    method disconnect (line 397) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpcManager.java
  class SimpleNettyRpcManager (line 23) | public class SimpleNettyRpcManager implements RpcManager {
    method SimpleNettyRpcManager (line 48) | public SimpleNettyRpcManager(int partyNum, int startPort) {
    method getRpc (line 68) | @Override
    method getPartyName (line 76) | private String getPartyName(int partyId) {
    method getPartyNum (line 80) | @Override
    method getPartySet (line 85) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/AbstractMainTwoPartyPto.java
  class AbstractMainTwoPartyPto (line 18) | public abstract class AbstractMainTwoPartyPto implements MainTwoPartyPto {
    method AbstractMainTwoPartyPto (line 37) | public AbstractMainTwoPartyPto(Properties properties, String ownName) {
    method runNetty (line 52) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainParty1Thread.java
  class MainParty1Thread (line 12) | public class MainParty1Thread extends Thread {
    method MainParty1Thread (line 30) | public MainParty1Thread(Rpc party1Rpc, Party party2, MainTwoPartyPto m...
    method getSuccess (line 37) | public boolean getSuccess() {
    method run (line 41) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainParty2Thread.java
  class MainParty2Thread (line 12) | public class MainParty2Thread extends Thread {
    method MainParty2Thread (line 30) | public MainParty2Thread(Rpc party2Rpc, Party party1, MainTwoPartyPto m...
    method getSuccess (line 37) | public boolean getSuccess() {
    method run (line 41) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainPtoConfigUtils.java
  class MainPtoConfigUtils (line 22) | public class MainPtoConfigUtils {
    method MainPtoConfigUtils (line 28) | private MainPtoConfigUtils() {
    method getFileFolderName (line 37) | public static String getFileFolderName() {
    method readFileFolderName (line 50) | public static String readFileFolderName(Properties properties) {
    method readAppendString (line 65) | public static String readAppendString(Properties properties) {
    method readPtoType (line 80) | public static String readPtoType(Properties properties) {
    method readEnum (line 94) | public static <T extends Enum<T>> T readEnum(Class<T> enumClass, Prope...
    method readCuckooHashBinType (line 115) | public static CuckooHashBinType readCuckooHashBinType(Properties prope...
    method readGf2eDokvsType (line 130) | public static Gf2eDokvsType readGf2eDokvsType(Properties properties) {
    method readGf2kDokvsType (line 145) | public static Gf2kDokvsType readGf2kDokvsType(Properties properties) {
    method readFilterType (line 160) | public static FilterType readFilterType(Properties properties) {
    method readSecurityModel (line 175) | public static SecurityModel readSecurityModel(Properties properties) {
    method readCompressEncode (line 190) | public static boolean readCompressEncode(Properties properties) {
    method readSilentCot (line 205) | public static boolean readSilentCot(Properties properties) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainTwoPartyPto.java
  type MainTwoPartyPto (line 15) | public interface MainTwoPartyPto {
    method runNetty (line 22) | void runNetty() throws IOException, MpcAbortException;
    method runParty1 (line 32) | void runParty1(Rpc party1Rpc, Party party2) throws IOException, MpcAbo...
    method runParty2 (line 42) | void runParty2(Rpc party2Rpc, Party party1) throws IOException, MpcAbo...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractMultiPartyPto.java
  class AbstractMultiPartyPto (line 29) | public abstract class AbstractMultiPartyPto implements MultiPartyPto {
    method AbstractMultiPartyPto (line 116) | protected AbstractMultiPartyPto(PtoDesc ptoDesc, MultiPartyPtoConfig c...
    method updateEncodeId (line 144) | private void updateEncodeId() {
    method addSubPto (line 155) | protected void addSubPto(MultiPartyPto subPto) {
    method updatePtoPath (line 174) | @Override
    method setTaskId (line 193) | @Override
    method setEncodeTaskId (line 207) | @Override
    method getTaskId (line 219) | @Override
    method getRpc (line 224) | @Override
    method getPtoDesc (line 229) | @Override
    method otherParties (line 234) | @Override
    method setParallel (line 239) | @Override
    method setSecureRandom (line 248) | @Override
    method getParallel (line 257) | @Override
    method getEnvType (line 262) | @Override
    method sendPayload (line 274) | protected void sendPayload(int stepId, Party receiveParty, List<byte[]...
    method sendEqualSizePayload (line 291) | protected void sendEqualSizePayload(int stepId, Party receiveParty, Li...
    method receivePayload (line 313) | protected List<byte[]> receivePayload(int stepId, Party sendParty) {
    method receiveEqualSizePayload (line 333) | protected List<byte[]> receiveEqualSizePayload(int stepId, Party sendP...
    method setDisplayLogLevel (line 347) | @Override
    method initState (line 362) | protected void initState() {
    method checkInitialized (line 375) | @Override
    method destroy (line 391) | @Override
    method logPhaseInfo (line 410) | protected void logPhaseInfo(PtoState ptoState) {
    method logPhaseInfo (line 429) | protected void logPhaseInfo(PtoState ptoState, String description) {
    method logStepInfo (line 460) | protected void logStepInfo(PtoState ptoState, int stepIndex, int total...
    method logStepInfo (line 481) | protected void logStepInfo(PtoState ptoState, int stepIndex, int total...
    method logSubStepInfo (line 502) | protected void logSubStepInfo(PtoState ptoState, int stepIndex, int su...
    method logSubStepInfo (line 524) | protected void logSubStepInfo(PtoState ptoState, int stepIndex, int su...
    method info (line 552) | protected void info(String message) {
    method info (line 566) | protected void info(String format, Object arg0, Object arg1) {
    method info (line 579) | protected void info(String format, Object... arguments) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractMultiPartyPtoConfig.java
  class AbstractMultiPartyPtoConfig (line 13) | public abstract class AbstractMultiPartyPtoConfig implements MultiPartyP...
    method AbstractMultiPartyPtoConfig (line 33) | protected AbstractMultiPartyPtoConfig(SecurityModel defaultModel, Mult...
    method setEnvType (line 52) | @Override
    method getEnvType (line 60) | @Override
    method getSecurityModel (line 65) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractThreePartyMemoryRpcPto.java
  class AbstractThreePartyMemoryRpcPto (line 22) | public abstract class AbstractThreePartyMemoryRpcPto {
    method AbstractThreePartyMemoryRpcPto (line 45) | public AbstractThreePartyMemoryRpcPto(String name) {
    method connect (line 55) | @Before
    method disconnect (line 62) | @After
    method printAndResetRpc (line 69) | protected void printAndResetRpc(long time) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractThreePartyPto.java
  class AbstractThreePartyPto (line 13) | public abstract class AbstractThreePartyPto extends AbstractMultiPartyPt...
    method AbstractThreePartyPto (line 23) | protected AbstractThreePartyPto(PtoDesc ptoDesc, Rpc ownRpc, Party lef...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyAidPto.java
  class AbstractTwoPartyAidPto (line 17) | public abstract class AbstractTwoPartyAidPto extends AbstractThreePartyP...
    method AbstractTwoPartyAidPto (line 32) | protected AbstractTwoPartyAidPto(PtoDesc ptoDesc, Rpc ownRpc, Party le...
    method receiveAnyAidDataPacket (line 42) | protected DataPacket receiveAnyAidDataPacket() {
    method receiveAnyAidDataPacket (line 57) | protected DataPacket receiveAnyAidDataPacket(DataPacketHeader received...
    method sendLeftPartyAidPayload (line 81) | protected void sendLeftPartyAidPayload(long encodeTaskId, int stepId, ...
    method sendRightPartyAidPayload (line 96) | protected void sendRightPartyAidPayload(long encodeTaskId, int stepId,...
    method sendLeftPartyPayload (line 110) | protected void sendLeftPartyPayload(int stepId, List<byte[]> payload) {
    method receiveLeftPartyPayload (line 120) | protected List<byte[]> receiveLeftPartyPayload(int stepId) {
    method sendRightPartyPayload (line 130) | protected void sendRightPartyPayload(int stepId, List<byte[]> payload) {
    method receiveRightPartyPayload (line 140) | protected List<byte[]> receiveRightPartyPayload(int stepId) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyMemoryRpcPto.java
  class AbstractTwoPartyMemoryRpcPto (line 26) | public abstract class AbstractTwoPartyMemoryRpcPto {
    method AbstractTwoPartyMemoryRpcPto (line 45) | public AbstractTwoPartyMemoryRpcPto(String name) {
    method connect (line 54) | @Before
    method disconnect (line 60) | @After
    method printAndResetRpc (line 66) | protected void printAndResetRpc(long time) {
    method runMain (line 78) | protected void runMain(MainTwoPartyPto party1Main, MainTwoPartyPto par...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyPto.java
  class AbstractTwoPartyPto (line 15) | public abstract class AbstractTwoPartyPto extends AbstractMultiPartyPto ...
    method AbstractTwoPartyPto (line 24) | protected AbstractTwoPartyPto(PtoDesc ptoDesc, Rpc ownRpc, Party other...
    method AbstractTwoPartyPto (line 37) | protected AbstractTwoPartyPto(PtoDesc ptoDesc, Rpc ownRpc, Party other...
    method sendOtherPartyPayload (line 48) | protected void sendOtherPartyPayload(int stepId, List<byte[]> payload) {
    method sendOtherPartyEqualSizePayload (line 58) | protected void sendOtherPartyEqualSizePayload(int stepId, List<byte[]>...
    method receiveOtherPartyPayload (line 68) | protected List<byte[]> receiveOtherPartyPayload(int stepId) {
    method receiveOtherPartyEqualSizePayload (line 80) | protected List<byte[]> receiveOtherPartyEqualSizePayload(int stepId, i...
    method aidParty (line 89) | private Party aidParty() {
    method sendAidPartyPayload (line 99) | protected void sendAidPartyPayload(int stepId, List<byte[]> payload) {
    method receiveAiderPayload (line 109) | protected List<byte[]> receiveAiderPayload(int stepId) {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/MultiPartyPto.java
  type MultiPartyPto (line 16) | public interface MultiPartyPto {
    method setTaskId (line 22) | void setTaskId(int taskId);
    method getTaskId (line 29) | int getTaskId();
    method setEncodeTaskId (line 36) | void setEncodeTaskId(int taskId);
    method updatePtoPath (line 43) | void updatePtoPath(int[] ptoPath);
    method getRpc (line 50) | Rpc getRpc();
    method ownParty (line 57) | default Party ownParty() {
    method getPtoDesc (line 66) | PtoDesc getPtoDesc();
    method otherParties (line 73) | Party[] otherParties();
    method setParallel (line 80) | void setParallel(boolean parallel);
    method getParallel (line 87) | boolean getParallel();
    method setSecureRandom (line 94) | void setSecureRandom(SecureRandom secureRandom);
    method getEnvType (line 101) | EnvType getEnvType();
    method setDisplayLogLevel (line 108) | void setDisplayLogLevel(int displayLogLevel);
    method checkInitialized (line 115) | void checkInitialized();
    method destroy (line 122) | void destroy();

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/MultiPartyPtoConfig.java
  type MultiPartyPtoConfig (line 13) | public interface MultiPartyPtoConfig extends Config {
    method setEnvType (line 19) | void setEnvType(EnvType envType);
    method getEnvType (line 26) | EnvType getEnvType();
    method getSecurityModel (line 33) | SecurityModel getSecurityModel();

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/PtoFactory.java
  type PtoFactory (line 9) | public interface PtoFactory {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/ThreePartyPto.java
  type ThreePartyPto (line 11) | public interface ThreePartyPto extends MultiPartyPto {
    method leftParty (line 17) | default Party leftParty() {
    method rightParty (line 26) | default Party rightParty() {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/TwoPartyAidPto.java
  type TwoPartyAidPto (line 11) | public interface TwoPartyAidPto extends MultiPartyPto {
    method init (line 17) | void init() throws MpcAbortException;
    method aid (line 23) | void aid() throws MpcAbortException;

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/TwoPartyPto.java
  type TwoPartyPto (line 11) | public interface TwoPartyPto extends MultiPartyPto {
    method otherParty (line 17) | default Party otherParty() {

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacket.java
  class DataPacket (line 16) | public final class DataPacket {
    method fromByteArrayList (line 41) | public static DataPacket fromByteArrayList(DataPacketHeader header, Li...
    method DataPacket (line 82) | private DataPacket() {
    method getHeader (line 91) | public DataPacketHeader getHeader() {
    method getPayloadType (line 100) | public PayloadType getPayloadType() {
    method getPayload (line 109) | public List<byte[]> getPayload() {
    method getEqualLength (line 118) | public int getEqualLength() {
    method hashCode (line 122) | @Override
    method equals (line 130) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBuffer.java
  class DataPacketBuffer (line 16) | public class DataPacketBuffer {
    method DataPacketBuffer (line 26) | public DataPacketBuffer() {
    method put (line 35) | public synchronized void put(DataPacket dataPacket) {
    method takeImmediately (line 47) | public synchronized DataPacket takeImmediately(DataPacketHeader header...
    method clearBuffer (line 62) | public synchronized void clearBuffer(DataPacketHeader header) {
    method clearAll (line 70) | public synchronized void clearAll() {
    method take (line 81) | public synchronized DataPacket take(DataPacketHeader header) throws In...
    method take (line 98) | public synchronized DataPacket take(int receiverId, int ptoId) throws ...

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketHeader.java
  class DataPacketHeader (line 19) | public class DataPacketHeader {
    method DataPacketHeader (line 54) | public DataPacketHeader(long encodeTaskId, int ptoId, int stepId, int ...
    method DataPacketHeader (line 68) | public DataPacketHeader(long encodeTaskId, int ptoId, int stepId, long...
    method getEncodeTaskId (line 89) | public long getEncodeTaskId() {
    method getPtoId (line 98) | public int getPtoId() {
    method getStepId (line 107) | public int getStepId() {
    method getExtraInfo (line 116) | public long getExtraInfo() {
    method getSenderId (line 125) | public int getSenderId() {
    method getReceiverId (line 134) | public int getReceiverId() {
    method hashCode (line 138) | @Override
    method equals (line 150) | @Override

FILE: mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/PayloadType.java
  type PayloadType (line 9) | public enum PayloadType {

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/RpcTestUtils.java
  class RpcTestUtils (line 11) | public class RpcTestUtils {
    method RpcTestUtils (line 13) | private RpcTestUtils() {

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcConnectTest.java
  class RpcConnectTest (line 37) | @RunWith(Parameterized.class)
    method configurations (line 52) | @Parameterized.Parameters(name = "{0}")
    method RpcConnectTest (line 73) | public RpcConnectTest(String name, RpcManager rpcManager) {
    method testSingleConnectDisconnect (line 78) | @Test
    method testDoubleConnect (line 85) | @Test
    method testDoubleDisconnect (line 94) | @Test
    method testReconnect (line 103) | @Test
    method testAscendingConnectDisconnect (line 117) | @Test
    method testDescendingConnectDisconnect (line 124) | @Test
    method testAscendingReconnect (line 131) | @Test
    method testDescendingReconnect (line 143) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcImplTestPtoDesc.java
  class RpcImplTestPtoDesc (line 12) | class RpcImplTestPtoDesc implements PtoDesc {
    type PtoStep (line 25) | enum PtoStep {
    method RpcImplTestPtoDesc (line 73) | private RpcImplTestPtoDesc() {
    method getInstance (line 77) | public static PtoDesc getInstance() {
    method getPtoId (line 85) | @Override
    method getPtoName (line 90) | @Override

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcImplTestUtils.java
  class RpcImplTestUtils (line 20) | public class RpcImplTestUtils {
    method RpcImplTestUtils (line 24) | private RpcImplTestUtils() {
    method connectRandom (line 35) | public static void connectRandom(RpcManager rpcManager, int timeoutSec...
    method disconnectRandom (line 59) | public static void disconnectRandom(RpcManager rpcManager, int timeout...
    method connectAscending (line 87) | public static void connectAscending(RpcManager rpcManager, int timeout...
    method disconnectAscending (line 113) | public static void disconnectAscending(RpcManager rpcManager, int time...
    method connectDescending (line 142) | public static void connectDescending(RpcManager rpcManager, int timeou...
    method disconnectDescending (line 168) | public static void disconnectDescending(RpcManager rpcManager, int tim...
    method sendAndReceiveEmptyPackets (line 197) | public static void sendAndReceiveEmptyPackets(RpcManager rpcManager, i...

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcSendRecvTest.java
  class RpcSendRecvTest (line 35) | @RunWith(Parameterized.class)
    method configurations (line 38) | @Parameterized.Parameters(name = "{0}")
    method RpcSendRecvTest (line 60) | public RpcSendRecvTest(String name, RpcManager rpcManager) {
    method connect (line 65) | @Before
    method disconnect (line 75) | @After
    method testData (line 84) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcSendRecvThread.java
  class RpcSendRecvThread (line 26) | class RpcSendRecvThread extends Thread {
    method RpcSendRecvThread (line 64) | RpcSendRecvThread(int taskId, Rpc rpc) {
    method getSendDataPacketSet (line 72) | Set<DataPacket> getSendDataPacketSet() {
    method getReceivedDataPacketSet (line 76) | Set<DataPacket> getReceivedDataPacketSet() {
    method run (line 80) | @Override
    method emptyDataPacket (line 104) | private void emptyDataPacket() {
    method zeroLengthDataPacket (line 132) | private void zeroLengthDataPacket() {
    method singletonDataPacket (line 162) | private void singletonDataPacket() {
    method l1DataPacket (line 194) | private void l1DataPacket() {
    method l2DataPacket (line 230) | private void l2DataPacket() {
    method l4DataPacket (line 266) | private void l4DataPacket() {
    method l8DataPacket (line 302) | private void l8DataPacket() {
    method equalLengthDataPacket (line 337) | private void equalLengthDataPacket() {
    method extraInfoDataPacket (line 372) | private void extraInfoDataPacket() {
    method takeAnyDataPacket (line 408) | private void takeAnyDataPacket() {

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustChunkAssemblerTest.java
  class RobustChunkAssemblerTest (line 33) | public class RobustChunkAssemblerTest {
    method makeChunks (line 51) | private static List<ChunkProto> makeChunks(long encodeTaskId, byte[] s...
    method RobustChunkAssemblerTest (line 86) | public RobustChunkAssemblerTest() {
    method testEmptyChunk (line 90) | @Test
    method testSingleChunk (line 102) | @Test
    method testMultiChunkInOrder (line 117) | @Test
    method testMultiChunkOutOfOrder (line 142) | @Test
    method testDuplicateChunkIdempotent (line 168) | @Test
    method testTwoDataPacketsIndependent (line 196) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpcTest.java
  class RobustNettyRpcTest (line 38) | public class RobustNettyRpcTest {
    class FaultInjectionHandler (line 69) | @ChannelHandler.Sharable
      method FaultInjectionHandler (line 80) | FaultInjectionHandler(int failCount) {
      method write (line 85) | @Override
      method getFailureTriggered (line 97) | int getFailureTriggered() {
    class PeriodicFaultHandler (line 110) | @ChannelHandler.Sharable
      method PeriodicFaultHandler (line 125) | PeriodicFaultHandler(int period) {
      method write (line 131) | @Override
      method getFailureTriggered (line 141) | int getFailureTriggered() {
    method testWriteFailureRetransmission (line 161) | @Test
    method testPartialDisconnectTimeout (line 177) | @Test
    method testIntermittentWriteFailure (line 212) | @Test
    method testBoundaryRetryExhaustion (line 233) | @Test
    method testDataIntegrityUnderWriteFailure (line 260) | @Test
    method sendAndReceiveRandomPayload (line 283) | private void sendAndReceiveRandomPayload(RobustNettyRpcManager rpcMana...

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpcTest.java
  class SimpleNettyRpcTest (line 18) | public class SimpleNettyRpcTest {
    method testPartialDisconnectTimeout (line 44) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferParty1Thread.java
  class DataPacketBufferParty1Thread (line 17) | public class DataPacketBufferParty1Thread extends Thread {
    method DataPacketBufferParty1Thread (line 35) | DataPacketBufferParty1Thread(DataPacketBuffer dataPacketBuffer) {
    method run (line 41) | @Override
    method getPayloadList (line 80) | public List<Long> getPayloadList() {
    method getPayloadSet (line 84) | public Set<Long> getPayloadSet() {

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferParty2Thread.java
  class DataPacketBufferParty2Thread (line 17) | class DataPacketBufferParty2Thread extends Thread {
    method DataPacketBufferParty2Thread (line 35) | DataPacketBufferParty2Thread(DataPacketBuffer dataPacketBuffer) {
    method run (line 41) | @Override
    method getPayloadList (line 80) | public List<Long> getPayloadList() {
    method getPayloadSet (line 84) | public Set<Long> getPayloadSet() {

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferTest.java
  class DataPacketBufferTest (line 17) | public class DataPacketBufferTest {
    method testDataPacketBuffer (line 55) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketTest.java
  class DataPacketTest (line 23) | public class DataPacketTest {
    method DataPacketTest (line 33) | public DataPacketTest() {
    method testEmptyDataPacket (line 39) | @Test
    method testIntDataPacket (line 59) | @Test
    method testDoubleDataPacket (line 87) | @Test
    method testByteArrayDataPacket (line 115) | @Test
    method testBigIntegerDataPacket (line 139) | @Test

FILE: mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketTestPtoDesc.java
  class DataPacketTestPtoDesc (line 12) | class DataPacketTestPtoDesc implements PtoDesc {
    type PtoStep (line 25) | enum PtoStep {
    method DataPacketTestPtoDesc (line 53) | private DataPacketTestPtoDesc() {
    method getInstance (line 57) | public static PtoDesc getInstance() {
    method getPtoId (line 65) | @Override
    method getPtoName (line 70) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/Sampler.java
  type Sampler (line 9) | public interface Sampler {
    method getMean (line 16) | double getMean();
    method getVariance (line 23) | double getVariance();
    method reseed (line 31) | void reseed(long seed) throws UnsupportedOperationException;

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/SecureNoiseMath.java
  class SecureNoiseMath (line 24) | public final class SecureNoiseMath {
    method SecureNoiseMath (line 26) | private SecureNoiseMath() {
    method ceilPowerOfTwo (line 35) | public static double ceilPowerOfTwo(double x) {
    method roundToMultipleOfPowerOfTwo (line 67) | public static double roundToMultipleOfPowerOfTwo(double x, double gran...
    method roundToMultiple (line 88) | public static long roundToMultiple(long x, long granularity) {
    method nextLargerDouble (line 101) | public static double nextLargerDouble(long n) {
    method nextSmallerDouble (line 119) | public static double nextSmallerDouble(long n) {

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/BinarySampler.java
  type BinarySampler (line 11) | public interface BinarySampler extends Sampler {
    method sample (line 17) | boolean sample();

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/ApacheBernoulliSampler.java
  class ApacheBernoulliSampler (line 18) | public class ApacheBernoulliSampler implements BernoulliSampler {
    method ApacheBernoulliSampler (line 28) | public ApacheBernoulliSampler(double p) {
    method ApacheBernoulliSampler (line 32) | public ApacheBernoulliSampler(RandomGenerator randomGenerator, double ...
    method getP (line 38) | @Override
    method sample (line 43) | @Override
    method reseed (line 55) | @Override
    method toString (line 60) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/BernoulliSampler.java
  type BernoulliSampler (line 15) | public interface BernoulliSampler extends BinarySampler {
    method getP (line 21) | double getP();
    method getMean (line 28) | @Override
    method getVariance (line 38) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/ExpBernoulliSampler.java
  class ExpBernoulliSampler (line 24) | public class ExpBernoulliSampler implements BernoulliSampler {
    method ExpBernoulliSampler (line 42) | public ExpBernoulliSampler(double gamma) {
    method ExpBernoulliSampler (line 46) | public ExpBernoulliSampler(Random random, double gamma) {
    method getP (line 54) | @Override
    method sample (line 59) | @Override
    method reseed (line 103) | @Override
    method toString (line 108) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/SecureBernoulliSampler.java
  class SecureBernoulliSampler (line 19) | public class SecureBernoulliSampler implements BernoulliSampler {
    method SecureBernoulliSampler (line 29) | public SecureBernoulliSampler(double p) {
    method SecureBernoulliSampler (line 33) | public SecureBernoulliSampler(Random random, double p) {
    method getP (line 39) | @Override
    method sample (line 44) | @Override
    method reseed (line 56) | @Override
    method toString (line 61) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/others/ExpfBernoulliSampler.java
  class ExpfBernoulliSampler (line 24) | public class ExpfBernoulliSampler implements Sampler {
    method ExpfBernoulliSampler (line 42) | public ExpfBernoulliSampler(Random random, double f, int upperBound) {
    method sample (line 75) | public boolean sample(int x) {
    method getMean (line 95) | @Override
    method getVariance (line 100) | @Override
    method reseed (line 105) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/IntegralSampler.java
  type IntegralSampler (line 11) | public interface IntegralSampler extends Sampler {
    method sample (line 17) | int sample();

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AbstractDiscGaussSampler.java
  class AbstractDiscGaussSampler (line 11) | abstract class AbstractDiscGaussSampler implements DiscGaussSampler {
    method AbstractDiscGaussSampler (line 25) | AbstractDiscGaussSampler(Random random, int c, double sigma) {
    method getC (line 32) | @Override
    method getInputSigma (line 37) | @Override
    method reseed (line 42) | @Override
    method toString (line 47) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AbstractTauDiscGaussSampler.java
  class AbstractTauDiscGaussSampler (line 11) | abstract class AbstractTauDiscGaussSampler extends AbstractDiscGaussSamp...
    method AbstractTauDiscGaussSampler (line 17) | AbstractTauDiscGaussSampler(Random random, int c, double sigma, int ta...
    method getTau (line 23) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AliasTauDiscGaussSampler.java
  class AliasTauDiscGaussSampler (line 22) | class AliasTauDiscGaussSampler extends AbstractTauDiscGaussSampler {
    method AliasTauDiscGaussSampler (line 52) | AliasTauDiscGaussSampler(Random random, int c, double sigma, int tau) {
    method getLowestRhoIndex (line 87) | private int getLowestRhoIndex() {
    method getHighestRhoIndex (line 99) | private int getHighestRhoIndex() {
    method getType (line 111) | @Override
    method sample (line 116) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Cks20DiscGaussSampler.java
  class Cks20DiscGaussSampler (line 19) | class Cks20DiscGaussSampler extends AbstractDiscGaussSampler {
    method Cks20DiscGaussSampler (line 40) | public Cks20DiscGaussSampler(Random random, int c, double sigma) {
    method sample (line 47) | @Override
    method getType (line 64) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Cks20TauDiscGaussSampler.java
  class Cks20TauDiscGaussSampler (line 17) | class Cks20TauDiscGaussSampler extends Cks20DiscGaussSampler implements ...
    method Cks20TauDiscGaussSampler (line 35) | public Cks20TauDiscGaussSampler(Random random, int c, double sigma, in...
    method sample (line 42) | @Override
    method getTau (line 51) | @Override
    method getType (line 56) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/ConvolutionDiscGaussSampler.java
  class ConvolutionDiscGaussSampler (line 30) | class ConvolutionDiscGaussSampler extends AbstractDiscGaussSampler {
    method ConvolutionDiscGaussSampler (line 40) | ConvolutionDiscGaussSampler(Random random, int c, double sigma) {
    method getType (line 87) | @Override
    method sample (line 92) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSampler.java
  type DiscGaussSampler (line 19) | public interface DiscGaussSampler extends IntegralSampler {
    method getType (line 25) | DiscGaussSamplerFactory.DiscGaussSamplerType getType();
    method getC (line 32) | int getC();
    method getInputSigma (line 39) | double getInputSigma();
    method getActualSigma (line 46) | default double getActualSigma() {
    method getMean (line 55) | @Override
    method getVariance (line 66) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSamplerFactory.java
  class DiscGaussSamplerFactory (line 14) | public class DiscGaussSamplerFactory {
    method getUpperBound (line 39) | static int getUpperBound(double sigma, int tau) {
    method getUnitProbability (line 49) | static double getUnitProbability(double sigma) {
    method getK (line 59) | static double getK(double sigma) {
    method DiscGaussSamplerFactory (line 63) | private DiscGaussSamplerFactory() {
    type DiscGaussSamplerType (line 67) | public enum DiscGaussSamplerType {
    method createInstance (line 117) | public static DiscGaussSampler createInstance(DiscGaussSamplerType typ...
    method createInstance (line 130) | public static DiscGaussSampler createInstance(DiscGaussSamplerType typ...
    method createTauInstance (line 151) | public static TauDiscGaussSampler createTauInstance(int c, double sigm...
    method createTauInstance (line 175) | public static TauDiscGaussSampler createTauInstance(DiscGaussSamplerTy...
    method createTauInstance (line 189) | public static TauDiscGaussSampler createTauInstance(DiscGaussSamplerTy...

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Sigma2LogTableDiscGaussSampler.java
  class Sigma2LogTableDiscGaussSampler (line 29) | class Sigma2LogTableDiscGaussSampler extends AbstractDiscGaussSampler {
    method Sigma2LogTableDiscGaussSampler (line 54) | Sigma2LogTableDiscGaussSampler(Random random, int c, double sigma) {
    method getType (line 64) | @Override
    method sample (line 69) | @Override
    method getActualSigma (line 101) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Sigma2LogTableTauDiscGaussSampler.java
  class Sigma2LogTableTauDiscGaussSampler (line 26) | class Sigma2LogTableTauDiscGaussSampler extends Sigma2LogTableDiscGaussS...
    method Sigma2LogTableTauDiscGaussSampler (line 44) | public Sigma2LogTableTauDiscGaussSampler(Random random, int c, double ...
    method sample (line 51) | @Override
    method getTau (line 60) | @Override
    method getType (line 65) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/TauDiscGaussSampler.java
  type TauDiscGaussSampler (line 13) | public interface TauDiscGaussSampler extends DiscGaussSampler {
    method getTau (line 19) | int getTau();

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/UniLogTableTauDiscGaussSampler.java
  class UniLogTableTauDiscGaussSampler (line 22) | class UniLogTableTauDiscGaussSampler extends AbstractTauDiscGaussSampler {
    method UniLogTableTauDiscGaussSampler (line 44) | UniLogTableTauDiscGaussSampler(Random random, int c, double sigma, int...
    method getType (line 53) | @Override
    method sample (line 58) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/UniOnlineTauDiscGaussSampler.java
  class UniOnlineTauDiscGaussSampler (line 18) | class UniOnlineTauDiscGaussSampler extends AbstractTauDiscGaussSampler {
    method UniOnlineTauDiscGaussSampler (line 40) | public UniOnlineTauDiscGaussSampler(Random random, int c, double sigma...
    method sample (line 48) | @Override
    method getType (line 61) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/UniTableTauDiscGaussSampler.java
  class UniTableTauDiscGaussSampler (line 21) | class UniTableTauDiscGaussSampler extends AbstractTauDiscGaussSampler {
    method UniTableTauDiscGaussSampler (line 43) | public UniTableTauDiscGaussSampler(Random random, int c, double sigma,...
    method sample (line 53) | @Override
    method getType (line 66) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/geometric/ApacheGeometricSampler.java
  class ApacheGeometricSampler (line 18) | public class ApacheGeometricSampler implements GeometricSampler {
    method ApacheGeometricSampler (line 36) | public ApacheGeometricSampler(int mu, double b) {
    method ApacheGeometricSampler (line 40) | public ApacheGeometricSampler(RandomGenerator randomGenerator, int mu,...
    method getMu (line 48) | @Override
    method getB (line 53) | @Override
    method sample (line 58) | @Override
    method reseed (line 67) | @Override
    method toString (line 72) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/geometric/DiscreteGeometricSampler.java
  class DiscreteGeometricSampler (line 23) | public class DiscreteGeometricSampler implements GeometricSampler {
    method DiscreteGeometricSampler (line 56) | public DiscreteGeometricSampler(int mu, int t, int s) {
    method DiscreteGeometricSampler (line 68) | public DiscreteGeometricSampler(Random random, int mu, int t, int s) {
    method sample (line 79) | @Override
    method getMu (line 120) | @Override
    method getB (line 125) | @Override
    method reseed (line 130) | @Override
    method toString (line 135) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/geometric/GeometricSampler.java
  type GeometricSampler (line 21) | public interface GeometricSampler extends IntegralSampler {
    method getMu (line 27) | int getMu();
    method getB (line 34) | double getB();
    method getMean (line 36) | @Override
    method getVariance (line 41) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/geometric/JdkGeometricSampler.java
  class JdkGeometricSampler (line 19) | public class JdkGeometricSampler implements GeometricSampler {
    method JdkGeometricSampler (line 37) | public JdkGeometricSampler(int mu, double b) {
    method JdkGeometricSampler (line 41) | public JdkGeometricSampler(Random random, int mu, double b) {
    method getMu (line 49) | @Override
    method getB (line 54) | @Override
    method sample (line 59) | @Override
    method reseed (line 68) | @Override
    method toString (line 73) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/nb/ApacheNbSampler.java
  class ApacheNbSampler (line 20) | public class ApacheNbSampler implements NbSampler {
    method ApacheNbSampler (line 38) | public ApacheNbSampler(double r, double p) {
    method ApacheNbSampler (line 42) | public ApacheNbSampler(RandomGenerator randomGenerator, double r, doub...
    method sample (line 51) | @Override
    method getR (line 62) | @Override
    method getP (line 67) | @Override
    method reseed (line 72) | @Override
    method toString (line 77) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/nb/NbSampler.java
  type NbSampler (line 18) | public interface NbSampler extends IntegralSampler {
    method getR (line 24) | double getR();
    method getP (line 31) | double getP();
    method getMean (line 33) | @Override
    method getVariance (line 39) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/others/Sigma2DiscGaussSampler.java
  class Sigma2DiscGaussSampler (line 29) | public class Sigma2DiscGaussSampler implements Sampler {
    method Sigma2DiscGaussSampler (line 39) | public Sigma2DiscGaussSampler(Random random) {
    method sample (line 43) | public int sample() {
    method getMean (line 75) | @Override
    method getVariance (line 80) | @Override
    method reseed (line 85) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/poisson/ApachePoissonSampler.java
  class ApachePoissonSampler (line 13) | public class ApachePoissonSampler implements PoissonSampler {
    method ApachePoissonSampler (line 19) | public ApachePoissonSampler(double lambda) {
    method ApachePoissonSampler (line 23) | public ApachePoissonSampler(RandomGenerator randomGenerator, double la...
    method getLambda (line 30) | @Override
    method sample (line 35) | @Override
    method reseed (line 40) | @Override
    method toString (line 45) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/poisson/PoissonSampler.java
  type PoissonSampler (line 15) | public interface PoissonSampler extends IntegralSampler {
    method getLambda (line 21) | double getLambda();
    method getMean (line 28) | @Override
    method getVariance (line 38) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/RealSampler.java
  type RealSampler (line 11) | public interface RealSampler extends Sampler {
    method sample (line 17) | double sample();

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/gamma/ApacheGammaSampler.java
  class ApacheGammaSampler (line 24) | public class ApacheGammaSampler implements GammaSampler {
    method ApacheGammaSampler (line 30) | public ApacheGammaSampler(double shape, double scale) {
    method ApacheGammaSampler (line 34) | public ApacheGammaSampler(RandomGenerator randomGenerator, double shap...
    method getAlpha (line 38) | @Override
    method getBeta (line 44) | @Override
    method getShape (line 50) | @Override
    method getScale (line 55) | @Override
    method sample (line 60) | @Override
    method reseed (line 65) | @Override
    method toString (line 70) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/gamma/GammaSampler.java
  type GammaSampler (line 14) | public interface GammaSampler extends RealSampler {
    method getAlpha (line 21) | double getAlpha();
    method getBeta (line 28) | double getBeta();
    method getShape (line 35) | double getShape();
    method getScale (line 42) | double getScale();
    method getMean (line 44) | @Override
    method getVariance (line 49) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/gaussian/ApacheGaussianSampler.java
  class ApacheGaussianSampler (line 13) | public class ApacheGaussianSampler implements GaussianSampler {
    method ApacheGaussianSampler (line 19) | public ApacheGaussianSampler(double mu, double sigma) {
    method ApacheGaussianSampler (line 23) | public ApacheGaussianSampler(RandomGenerator randomGenerator, double m...
    method getMu (line 27) | @Override
    method getSigma (line 32) | @Override
    method sample (line 37) | @Override
    method reseed (line 42) | @Override
    method toString (line 47) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/gaussian/GaussianSampler.java
  type GaussianSampler (line 15) | public interface GaussianSampler extends RealSampler {
    method getMu (line 22) | double getMu();
    method getSigma (line 29) | double getSigma();
    method getMean (line 31) | @Override
    method getVariance (line 36) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/gaussian/GoogleGaussianSampler.java
  class GoogleGaussianSampler (line 31) | public class GoogleGaussianSampler implements GaussianSampler {
    method GoogleGaussianSampler (line 63) | public GoogleGaussianSampler(double mu, double sigma) {
    method sample (line 70) | @Override
    method getMu (line 81) | @Override
    method getSigma (line 86) | @Override
    method reseed (line 91) | @Override
    method getGranularity (line 99) | private static double getGranularity(double sigma) {
    method sampleSymmetricBinomial (line 103) | private long sampleSymmetricBinomial(double sqrtN) {
    method sampleBoundedGeometric (line 129) | private long sampleBoundedGeometric() {
    method sampleUniform (line 142) | private long sampleUniform(long n) {
    method approximateBinomialProbability (line 162) | private static double approximateBinomialProbability(double sqrtN, lon...
    method toString (line 172) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/laplace/ApacheLaplaceSampler.java
  class ApacheLaplaceSampler (line 18) | public class ApacheLaplaceSampler implements LaplaceSampler {
    method ApacheLaplaceSampler (line 30) | public ApacheLaplaceSampler(double mu, double b) {
    method ApacheLaplaceSampler (line 41) | public ApacheLaplaceSampler(RandomGenerator randomGenerator, double mu...
    method sample (line 45) | @Override
    method getMu (line 50) | @Override
    method getB (line 55) | @Override
    method reseed (line 60) | @Override
    method toString (line 65) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/laplace/GoogleLaplaceSampler.java
  class GoogleLaplaceSampler (line 11) | public class GoogleLaplaceSampler implements LaplaceSampler {
    method GoogleLaplaceSampler (line 29) | public GoogleLaplaceSampler(double mu, double b) {
    method sample (line 39) | @Override
    method getMu (line 45) | @Override
    method getB (line 50) | @Override
    method reseed (line 55) | @Override
    method toString (line 60) | @Override

FILE: mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/real/laplace/LaplaceSampler.java
  type LaplaceSampler (line 18) | public interface LaplaceSampler extends RealSampler {
    method getMu (line 25) | double getMu();
    method getB (line 32) | double getB();
    method getMean (line 34) | @Override
    method getVariance (line 39) | @Override

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/binary/BernoulliEfficiencyTest.java
  class BernoulliEfficiencyTest (line 23) | @Ignore
    method BernoulliEfficiencyTest (line 43) | public BernoulliEfficiencyTest() {
    method testEfficiency (line 47) | @Test
    method testEfficiency (line 60) | private void testEfficiency(String name, BernoulliSampler sampler) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/binary/BernoulliTest.java
  class BernoulliTest (line 28) | @RunWith(Parameterized.class)
    method configurations (line 36) | @Parameterized.Parameters(name="{0}")
    method BernoulliTest (line 77) | public BernoulliTest(String name, BernoulliSampler sampler) {
    method testSample (line 82) | @Test
    method testParams (line 110) | @Test
    method testReseed (line 129) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/IntegerEfficiencyTest.java
  class IntegerEfficiencyTest (line 23) | @Ignore
    method IntegerEfficiencyTest (line 39) | public IntegerEfficiencyTest() {
    method testGeometricEfficiency (line 43) | @Test
    method testEfficiency (line 60) | private void testEfficiency(String name, IntegralSampler sampler) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/ConvolutionDiscGaussSamplerTest.java
  class ConvolutionDiscGaussSamplerTest (line 19) | public class ConvolutionDiscGaussSamplerTest {
    method testRatios (line 21) | @Test
    method testRatios (line 27) | private void testRatios(double sigma) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSamplerEfficiencyTest.java
  class DiscGaussSamplerEfficiencyTest (line 22) | @Ignore
    method DiscGaussSamplerEfficiencyTest (line 48) | public DiscGaussSamplerEfficiencyTest() {
    method testEfficiency (line 52) | @Test
    method testEfficiency (line 62) | private void testEfficiency(double sigma) {
    method testEfficiency (line 69) | private void testEfficiency(DiscGaussSamplerType type, double sigma) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSamplerTest.java
  class DiscGaussSamplerTest (line 22) | @RunWith(Parameterized.class)
    method configurations (line 25) | @Parameterized.Parameters(name = "{0}")
    method DiscGaussSamplerTest (line 74) | public DiscGaussSamplerTest(String name, DiscGaussSamplerType type) {
    method testType (line 79) | @Test
    method testSample (line 85) | @Test
    method testMean (line 105) | @Test
    method testMean (line 113) | private void testMean(int c, double sigma) {
    method testRatios (line 118) | @Test
    method testRatios (line 127) | private void testRatios(double sigma) {
    method testReseed (line 132) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSamplerTestUtils.java
  class DiscGaussSamplerTestUtils (line 13) | class DiscGaussSamplerTestUtils {
    method DiscGaussSamplerTestUtils (line 15) | private DiscGaussSamplerTestUtils() {
    method testRatios (line 32) | static void testRatios(DiscGaussSampler sampler) {
    method rho (line 56) | private static double rho(double x, double sigma) {
    method testMean (line 60) | static void testMean(DiscGaussSampler sampler) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/TauDiscGaussSamplerTest.java
  class TauDiscGaussSamplerTest (line 20) | @RunWith(Parameterized.class)
    method configurations (line 23) | @Parameterized.Parameters(name = "{0}")
    method TauDiscGaussSamplerTest (line 60) | public TauDiscGaussSamplerTest(String name, DiscGaussSamplerType type) {
    method testRatios (line 65) | @Test
    method testRatios (line 74) | private void testRatios(double sigma, int tau) {
    method testUniformBoundaries (line 79) | @Test
    method testUniformBoundaries (line 88) | private void testUniformBoundaries(int c, double sigma, int tau) {
    method testMean (line 103) | @Test
    method testMean (line 116) | private void testMean(int c, double sigma, int tau) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/geometric/GeometricTest.java
  class GeometricTest (line 24) | @RunWith(Parameterized.class)
    method configurations (line 32) | @Parameterized.Parameters(name = "{0}")
    method GeometricTest (line 91) | public GeometricTest(String name, GeometricSampler sampler) {
    method testSample (line 96) | @Test
    method testParams (line 115) | @Test
    method testReseed (line 131) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/nb/NbSamplerTest.java
  class NbSamplerTest (line 23) | @RunWith(Parameterized.class)
    method configurations (line 31) | @Parameterized.Parameters(name="{0}")
    method NbSamplerTest (line 67) | public NbSamplerTest(String name, NbSampler sampler) {
    method testSample (line 72) | @Test
    method testParams (line 91) | @Test
    method testReseed (line 107) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/integral/poisson/PoissonSamplerTest.java
  class PoissonSamplerTest (line 23) | @RunWith(Parameterized.class)
    method configurations (line 31) | @Parameterized.Parameters(name="{0}")
    method PoissonSamplerTest (line 55) | public PoissonSamplerTest(String name, PoissonSampler sampler) {
    method testSample (line 60) | @Test
    method testParams (line 79) | @Test
    method testReseed (line 95) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/real/RealEfficiencyTest.java
  class RealEfficiencyTest (line 25) | @Ignore
    method RealEfficiencyTest (line 45) | public RealEfficiencyTest() {
    method testGaussianEfficiency (line 49) | @Test
    method testGammaEfficiency (line 63) | @Test
    method testLaplaceEfficiency (line 78) | @Test
    method testEfficiency (line 92) | private void testEfficiency(String name, RealSampler sampler) {

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/real/gamma/GammaRealTest.java
  class GammaRealTest (line 25) | @RunWith(Parameterized.class)
    method configurations (line 33) | @Parameterized.Parameters(name="{0}")
    method GammaRealTest (line 60) | public GammaRealTest(String name, GammaSampler sampler) {
    method testSample (line 65) | @Test
    method testParams (line 84) | @Test
    method testReseed (line 100) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/real/gaussian/GaussianRealTest.java
  class GaussianRealTest (line 25) | @RunWith(Parameterized.class)
    method configurations (line 33) | @Parameterized.Parameters(name="{0}")
    method GaussianRealTest (line 70) | public GaussianRealTest(String name, GaussianSampler sampler) {
    method testSample (line 75) | @Test
    method testParams (line 94) | @Test
    method testReseed (line 110) | @Test

FILE: mpc4j-common-sampler/src/test/java/edu/alibaba/mpc4j/common/sampler/real/laplace/LaplaceRealTest.java
  class LaplaceRealTest (line 25) | @RunWith(Parameterized.class)
    method configurations (line 33) | @Parameterized.Parameters(name="{0}")
    method LaplaceRealTest (line 70) | public LaplaceRealTest(String name, LaplaceSampler sampler) {
    method testSample (line 75) | @Test
    method testParams (line 94) | @Test
    method testReseed (line 110) | @Test

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/StructureUtils.java
  class StructureUtils (line 9) | public class StructureUtils {
    method StructureUtils (line 13) | private StructureUtils() {

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/Database.java
  type Database (line 14) | public interface Database {
    method getType (line 20) | DatabaseFactory.DatabaseType getType();
    method rows (line 27) | int rows();
    method getL (line 34) | int getL();
    method getByteL (line 41) | int getByteL();
    method bitPartition (line 50) | BitVector[] bitPartition(EnvType envType, boolean parallel);
    method split (line 58) | Database split(int splitRows);
    method reduce (line 65) | void reduce(int reduceRows);
    method merge (line 72) | void merge(Database other);
    method getBytesData (line 79) | byte[][] getBytesData();
    method getBytesData (line 87) | byte[] getBytesData(int index);
    method getBigIntegerData (line 94) | BigInteger[] getBigIntegerData();
    method getBigIntegerData (line 102) | BigInteger getBigIntegerData(int index);

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/DatabaseFactory.java
  class DatabaseFactory (line 16) | public class DatabaseFactory {
    method DatabaseFactory (line 20) | private DatabaseFactory() {
    type DatabaseType (line 27) | public enum DatabaseType {
    method maxBitDatabaseL (line 52) | public static int maxBitDatabaseL(DatabaseType type) {
    method create (line 76) | public static Database create(DatabaseType type, int l, byte[][] data) {
    method createRandom (line 104) | public static Database createRandom(DatabaseType type, int l, int rows...
    method createEmpty (line 130) | public static Database createEmpty(DatabaseType type, int l) {
    method create (line 158) | public static Database create(DatabaseType type, EnvType envType, bool...

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/NaiveDatabase.java
  class NaiveDatabase (line 32) | public class NaiveDatabase implements Database {
    method create (line 53) | public static NaiveDatabase create(int l, byte[][] data) {
    method create (line 72) | public static NaiveDatabase create(int l, BigInteger[] data) {
    method create (line 91) | public static NaiveDatabase create(BitVector[] data) {
    method createRandom (line 107) | public static NaiveDatabase createRandom(int l, int rows, SecureRandom...
    method create (line 124) | public static NaiveDatabase create(EnvType envType, boolean parallel, ...
    method createEmpty (line 151) | public static NaiveDatabase createEmpty(int l) {
    method NaiveDatabase (line 158) | private NaiveDatabase(int l) {
    method getType (line 164) | @Override
    method rows (line 169) | @Override
    method getL (line 174) | @Override
    method getByteL (line 179) | @Override
    method bitPartition (line 184) | @Override
    method split (line 197) | @Override
    method reduce (line 209) | @Override
    method merge (line 221) | @Override
    method getBytesData (line 231) | @Override
    method setBytesData (line 244) | public void setBytesData(int index, byte[] entry) {
    method getBytesData (line 250) | @Override
    method getBigIntegerData (line 255) | @Override
    method getBigIntegerData (line 260) | @Override
    method hashCode (line 265) | @Override
    method equals (line 273) | @Override
    method toString (line 287) | @Override
    method partitionZl (line 304) | public ZlDatabase[] partitionZl(int partitionL) {
    method createFromZl (line 334) | public static NaiveDatabase createFromZl(int l, ZlDatabase... database...
    method partitionZl64 (line 367) | public Zl64Database[] partitionZl64(int partitionL) {
    method createFromZl64 (line 396) | public static NaiveDatabase createFromZl64(int l, Zl64Database... data...
    method partitionZl32 (line 429) | public Zl32Database[] partitionZl32(int partitionL) {
    method createFromZl32 (line 458) | public static NaiveDatabase createFromZl32(int l, Zl32Database... data...

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/Zl32Database.java
  class Zl32Database (line 30) | public class Zl32Database implements Database {
    method create (line 63) | public static Zl32Database create(int l, byte[][] data) {
    method create (line 87) | public static Zl32Database create(int l, int[] data) {
    method createRandom (line 104) | public static Zl32Database createRandom(int l, int rows, SecureRandom ...
    method create (line 119) | public static Zl32Database create(EnvType envType, boolean parallel, B...
    method createEmpty (line 149) | public static Zl32Database createEmpty(int l) {
    method Zl32Database (line 156) | private Zl32Database(int l) {
    method getType (line 166) | @Override
    method rows (line 171) | @Override
    method getL (line 176) | @Override
    method getByteL (line 181) | @Override
    method bitPartition (line 186) | @Override
    method split (line 197) | @Override
    method reduce (line 209) | @Override
    method merge (line 221) | @Override
    method getBytesData (line 231) | @Override
    method getBytesData (line 243) | @Override
    method getBigIntegerData (line 251) | @Override
    method getBigIntegerData (line 258) | @Override
    method getData (line 268) | public int[] getData() {
    method getData (line 278) | public int getData(int index) {
    method hashCode (line 282) | @Override
    method equals (line 290) | @Override
    method toString (line 304) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/Zl64Database.java
  class Zl64Database (line 30) | public class Zl64Database implements Database {
    method create (line 63) | public static Zl64Database create(int l, byte[][] data) {
    method create (line 87) | public static Zl64Database create(int l, long[] data) {
    method createRandom (line 104) | public static Zl64Database createRandom(int l, int rows, SecureRandom ...
    method create (line 119) | public static Zl64Database create(EnvType envType, boolean parallel, B...
    method createEmpty (line 149) | public static Zl64Database createEmpty(int l) {
    method Zl64Database (line 156) | private Zl64Database(int l) {
    method getType (line 166) | @Override
    method rows (line 171) | @Override
    method getL (line 176) | @Override
    method getByteL (line 181) | @Override
    method bitPartition (line 186) | @Override
    method split (line 197) | @Override
    method reduce (line 209) | @Override
    method merge (line 221) | @Override
    method getBytesData (line 231) | @Override
    method getBytesData (line 243) | @Override
    method getBigIntegerData (line 251) | @Override
    method getBigIntegerData (line 258) | @Override
    method getData (line 268) | public long[] getData() {
    method getData (line 278) | public long getData(int index) {
    method hashCode (line 282) | @Override
    method equals (line 290) | @Override
    method toString (line 304) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/database/ZlDatabase.java
  class ZlDatabase (line 31) | public class ZlDatabase implements Database {
    method create (line 52) | public static ZlDatabase create(int l, byte[][] data) {
    method createRandom (line 71) | public static ZlDatabase createRandom(int l, int rows, SecureRandom se...
    method create (line 88) | public static ZlDatabase create(EnvType envType, boolean parallel, Bit...
    method createEmpty (line 114) | public static ZlDatabase createEmpty(int l) {
    method ZlDatabase (line 121) | private ZlDatabase(int l) {
    method getType (line 127) | @Override
    method rows (line 132) | @Override
    method getL (line 137) | @Override
    method getByteL (line 142) | @Override
    method bitPartition (line 147) | @Override
    method split (line 157) | @Override
    method reduce (line 169) | @Override
    method merge (line 181) | @Override
    method getBytesData (line 191) | @Override
    method getBytesData (line 196) | @Override
    method setBytesData (line 207) | public void setBytesData(int index, byte[] entry) {
    method getBigIntegerData (line 213) | @Override
    method getBigIntegerData (line 220) | @Override
    method hashCode (line 225) | @Override
    method equals (line 233) | @Override
    method toString (line 251) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/AbstractFastCuckooFilter.java
  class AbstractFastCuckooFilter (line 20) | abstract class AbstractFastCuckooFilter<T> extends AbstractFastCuckooFil...
    method AbstractFastCuckooFilter (line 34) | public AbstractFastCuckooFilter(int maxSize, long hashSeed, int entrie...
    method size (line 40) | @Override
    method mightContain (line 45) | @Override
    method put (line 55) | public void put(T data) {
    method modifyPut (line 64) | @Override
    method addImpl (line 82) | private void addImpl(int i, long tag, TIntHashSet traceSet) {
    method modifyRemove (line 104) | @Override
    method getTable (line 123) | @Override
    method equals (line 128) | @Override
    method hashCode (line 156) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/AbstractFastCuckooFilterPosition.java
  class AbstractFastCuckooFilterPosition (line 16) | abstract class AbstractFastCuckooFilterPosition<T> implements FastCuckoo...
    method getBucketNum (line 24) | static int getBucketNum(int maxSize, int tagsPerBucket) {
    method AbstractFastCuckooFilterPosition (line 66) | public AbstractFastCuckooFilterPosition(int maxSize, long hashSeed, in...
    method indexHash (line 95) | protected int indexHash(long hv) {
    method tagHash (line 106) | protected long tagHash(long hv) {
    method headIndex (line 121) | protected int headIndex(long hv) {
    method altIndex (line 133) | protected int altIndex(int index, long tag) {
    method positions (line 139) | @Override
    method fingerprint (line 149) | @Override
    method maxSize (line 155) | @Override
    method getEntriesPerBucket (line 160) | @Override
    method getFingerprintBitLength (line 165) | @Override
    method getFingerprintByteLength (line 170) | @Override
    method getBucketNum (line 175) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/AbstractFastVacuumFilter.java
  class AbstractFastVacuumFilter (line 20) | abstract class AbstractFastVacuumFilter<T> extends AbstractFastVacuumFil...
    method AbstractFastVacuumFilter (line 38) | protected AbstractFastVacuumFilter(int maxSize, long hashSeed, int fin...
    method mightContain (line 45) | @Override
    method put (line 54) | @Override
    method modifyPut (line 66) | @Override
    method addImpl (line 80) | private void addImpl(int i1, int i2, long tag, TIntHashSet traceSet) {
    method modifyRemove (line 140) | @Override
    method getTable (line 160) | @Override
    method getBucket (line 165) | @Override
    method size (line 170) | @Override
    method equals (line 175) | @Override
    method hashCode (line 195) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/AbstractFastVacuumFilterPosition.java
  class AbstractFastVacuumFilterPosition (line 18) | abstract class AbstractFastVacuumFilterPosition<T> implements FastCuckoo...
    method getBucketNum (line 36) | static int getBucketNum(int maxSize, double loadFactor) {
    method getBucketNum (line 53) | static int getBucketNum(int maxSize, double loadFactor, int[] alternat...
    method setAlternateRange (line 68) | static void setAlternateRange(int maxSize, double loadFactor, int[] al...
    method rangeSelection (line 87) | static int rangeSelection(int n, double loadFactor, double r) {
    method loadFactorTest (line 105) | static boolean loadFactorTest(int n, double loadFactor, double r, int ...
    method AbstractFastVacuumFilterPosition (line 161) | public AbstractFastVacuumFilterPosition(int maxSize, long hashSeed, in...
    method positionHash (line 182) | protected int positionHash(long ele) {
    method tagHash (line 186) | protected long tagHash(long ele) {
    method murmurHash64 (line 194) | private long murmurHash64(long h) {
    method altIndex (line 210) | protected int altIndex(int index, long tag) {
    method positions (line 231) | @Override
    method fingerprint (line 243) | @Override
    method maxSize (line 249) | @Override
    method getEntriesPerBucket (line 254) | @Override
    method getFingerprintByteLength (line 259) | @Override
    method getFingerprintBitLength (line 264) | @Override
    method getBucketNum (line 269) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/FastCuckooFilter.java
  type FastCuckooFilter (line 13) | public interface FastCuckooFilter<T> extends FastCuckooFilterPosition<T> {
    method size (line 19) | int size();
    method mightContain (line 27) | boolean mightContain(T data);
    method byteSize (line 34) | default long byteSize() {
    method save (line 46) | List<byte[]> save();
    method modifyPut (line 55) | TIntSet modifyPut(T data);
    method put (line 62) | void put(T data);
    method modifyRemove (line 71) | int modifyRemove(T data);
    method remove (line 79) | default void remove(T data) {
    method getTable (line 88) | SingleTable getTable();
    method getBucket (line 96) | default long[] getBucket(int index) {
    method savePart (line 107) | List<byte[]> savePart(int fromBucketIndex, int toBucketIndex);

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/FastCuckooFilterFactory.java
  class FastCuckooFilterFactory (line 18) | public class FastCuckooFilterFactory {
    method FastCuckooFilterFactory (line 22) | private FastCuckooFilterFactory() {
    type FastCuckooFilterType (line 26) | public enum FastCuckooFilterType {
    method getBucketNum (line 52) | public static int getBucketNum(FastCuckooFilterType type, int maxSize) {
    method getEntriesPerBucket (line 67) | public static int getEntriesPerBucket(FastCuckooFilterType type) {
    method getFingerprintByteLength (line 82) | public static int getFingerprintByteLength(FastCuckooFilterType type) {
    method estimateByteSize (line 102) | public static long estimateByteSize(FastCuckooFilterType type, int max...
    method loadPart (line 131) | public static long[][] loadPart(FastCuckooFilterType type, List<byte[]...
    method loadPartByte (line 147) | public static byte[][] loadPartByte(FastCuckooFilterType type, List<by...
    method recoverFingerprint (line 162) | public static long[] recoverFingerprint(FastCuckooFilterType type, byt...
    method createCuckooFilter (line 181) | public static <X> FastCuckooFilter<X> createCuckooFilter(FastCuckooFil...
    method createCuckooFilterPosition (line 198) | public static <X> FastCuckooFilterPosition<X> createCuckooFilterPositi...
    method loadCuckooFilter (line 213) | public static <X> FastCuckooFilter<X> loadCuckooFilter(List<byte[]> by...

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/FastCuckooFilterPosition.java
  type FastCuckooFilterPosition (line 11) | public interface FastCuckooFilterPosition<T> {
    method getType (line 17) | FastCuckooFilterType getType();
    method positions (line 25) | int[] positions(T data);
    method fingerprint (line 33) | long fingerprint(T data);
    method maxSize (line 40) | int maxSize();
    method getEntriesPerBucket (line 47) | int getEntriesPerBucket();
    method getFingerprintBitLength (line 54) | int getFingerprintBitLength();
    method getFingerprintByteLength (line 61) | int getFingerprintByteLength();
    method getBucketNum (line 68) | int getBucketNum();

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/MobileFastCuckooFilter.java
  class MobileFastCuckooFilter (line 22) | public class MobileFastCuckooFilter<T> extends AbstractFastCuckooFilter<...
    method create (line 44) | static <X> MobileFastCuckooFilter<X> create(int maxSize, long hashSeed) {
    method load (line 55) | static <X> MobileFastCuckooFilter<X> load(List<byte[]> byteArrayList) {
    method MobileFastCuckooFilter (line 87) | private MobileFastCuckooFilter(int maxSize, long hashSeed) {
    method save (line 91) | @Override
    method loadPart (line 143) | static long[][] loadPart(List<byte[]> partMsg){
    method loadPartByte (line 172) | static byte[][] loadPartByte(List<byte[]> partMsg){
    method savePart (line 195) | @Override
    method getType (line 228) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/MobileFastCuckooFilterPosition.java
  class MobileFastCuckooFilterPosition (line 11) | public class MobileFastCuckooFilterPosition<T> extends AbstractFastCucko...
    method getBucketNum (line 31) | static int getBucketNum(int maxSize) {
    method MobileFastCuckooFilterPosition (line 35) | public MobileFastCuckooFilterPosition(int maxSize, long hashSeed) {
    method getType (line 39) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/MobileFastVacuumFilter.java
  class MobileFastVacuumFilter (line 22) | public class MobileFastVacuumFilter<T> extends AbstractFastVacuumFilter<...
    method create (line 38) | static <X> MobileFastVacuumFilter<X> create(int maxSize, long hashSeed) {
    method load (line 42) | static <X> MobileFastVacuumFilter<X> load(List<byte[]> byteArrayList) {
    method MobileFastVacuumFilter (line 74) | private MobileFastVacuumFilter(int maxSize, long hashSeed) {
    method save (line 78) | @Override
    method loadPart (line 127) | static long[][] loadPart(List<byte[]> partMsg){
    method loadPartByte (line 156) | static byte[][] loadPartByte(List<byte[]> partMsg){
    method savePart (line 180) | @Override
    method getType (line 210) | @Override

FILE: mpc4j-common-structure/src/main/java/edu/alibaba/mpc4j/common/structure/fastfilter/MobileFastVacuumFilterPosition.java
  class MobileFastVacuumFilterPosition (line 11) | public class MobileFastVacuumFilterPosition<T> extends AbstractFastVacuu...
    method getBucketNum (line 33) | static int getBucketNum(int maxSize) {
    method MobileFastVacuumFilterPosition (line 37) | public MobileFastVacuumFilterPosition(int maxSize, long hashSeed) {
   
Copy disabled (too large) Download .json
Condensed preview — 4736 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (39,505K chars).
[
  {
    "path": ".gitignore",
    "chars": 283,
    "preview": "target/\ncmake-build-release/\ncmake-build-debug/\nlocal/\n!.mvn/wrapper/maven-wrapper.jar\n\n### STS ###\n.apt_generated\n.clas"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 26658,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Change"
  },
  {
    "path": "INSTRUCTIONS.md",
    "chars": 2857,
    "preview": "# 使用`mpc4j`时的常用指令\n\n## Maven\n\n可以使用[Maven版本管理插件](http://www.mojohaus.org/versions-maven-plugin/)在多模块Maven项目中更新模块的版本号,参见[《如"
  },
  {
    "path": "LICENSE",
    "chars": 11356,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "PAPERS.md",
    "chars": 21464,
    "preview": "# Implementations of Existing Works\n\n`mpc4j` contains some implementations of existing works. Parts of the works are lis"
  },
  {
    "path": "README.md",
    "chars": 41482,
    "preview": "# mpc4j\n\n## Introduction\n\nMulti-Party Computation for Java (`mpc4j`) is an efficient and easy-to-use Secure Multi-Party "
  },
  {
    "path": "ae/2025_USEC_Practical_Keyword_PIR_from_Key-to-Index_Mappings.md",
    "chars": 4456,
    "preview": "# Artifact Evaluation for Practical Keyword Private Information Retrieval from Key-to-Index Mappings\n\nThe submodule `mpc"
  },
  {
    "path": "data/README.md",
    "chars": 25728,
    "preview": "# Datasets\n\nWe run our schemes on several public datasets to verify the correctness and effectiveness of our works. This"
  },
  {
    "path": "data/classification/breast_cancer/breastcancer.csv",
    "chars": 120922,
    "preview": "diagnosis,radius_mean,texture_mean,perimeter_mean,area_mean,smoothness_mean,compactness_mean,concavity_mean,concave poin"
  },
  {
    "path": "data/classification/iris/iris.csv",
    "chars": 4602,
    "preview": "sepallength,sepalwidth,petallength,petalwidth,class\n5.1,3.5,1.4,0.2,Iris-setosa\n4.9,3.0,1.4,0.2,Iris-setosa\n4.7,3.2,1.3,"
  },
  {
    "path": "data/classification/pendigits/pendigits.csv",
    "chars": 367953,
    "preview": "V1,V2,V3,V4,V5,V6,V7,V8,V9,V10,V11,V12,V13,V14,V15,V16,class\n47,100,27,81,57,37,26,0,0,23,56,53,100,90,40,98,8\n0,89,27,1"
  },
  {
    "path": "data/classification/weather/weather.csv",
    "chars": 403,
    "preview": "outlook_sunny,outlook_overcast,outlook_rainy,temperature_hor,temperature_mild,temperature_cool,humidity,windy,play\r\n1,0,"
  },
  {
    "path": "data/regression/abalone/abalone-test.csv",
    "chars": 53271,
    "preview": "sex_F,sex_M,sex_I,length,diameter,height,whole weight,shucked weight,viscera weight,shell weight,rings\r\n1,0,0,0.485,0.39"
  },
  {
    "path": "data/regression/abalone/abalone-train.csv",
    "chars": 159691,
    "preview": "sex_F,sex_M,sex_I,length,diameter,height,whole weight,shucked weight,viscera weight,shell weight,rings\r\n0,1,0,0.455,0.36"
  },
  {
    "path": "data/regression/autompg/autoMpg.csv",
    "chars": 25424,
    "preview": "cylinders_8,cylinders_4,cylinders_6,cylinders_3,cylinders_5,displacement,horsepower,weight,acceleration,model_70,model_7"
  },
  {
    "path": "data/regression/boston_housing/boston_housing.csv",
    "chars": 34695,
    "preview": "CRIM,ZN,INDUS,CHAS,NOX,RM,AGE,DIS,RAD,TAX,PTRATIO,B,LSTAT,class\n0.00632,18,2.31,0,0.538,6.575,65.2,4.09,1,296,15.3,396.9"
  },
  {
    "path": "data/regression/cpu/cpu.csv",
    "chars": 5068,
    "preview": "MYCT,MMIN,MMAX,CACH,CHMIN,CHMAX,class\n125,256,6000,256,16,128,199\n29,8000,32000,32,8,32,253\n29,8000,32000,32,8,32,253\n29"
  },
  {
    "path": "data/regression/kin8nm/kin8nm.csv",
    "chars": 1130510,
    "preview": "theta1,theta2,theta3,theta4,theta5,theta6,theta7,theta8,y\n-1.5119208e-02, 3.6074091e-01, 4.6939777e-01, 1.3096745e+00, 9"
  },
  {
    "path": "mpc4j-common-circuit/pom.xml",
    "chars": 1388,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/CircuitConfig.java",
    "chars": 216,
    "preview": "package edu.alibaba.mpc4j.common.circuit;\n\nimport edu.alibaba.mpc4j.common.tool.Config;\n\n/**\n * Circuit config interface"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/MpcVector.java",
    "chars": 359,
    "preview": "package edu.alibaba.mpc4j.common.circuit;\n\nimport edu.alibaba.mpc4j.common.structure.vector.Vector;\n\n/**\n * Mpc Vector.\n"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/DyadicAcOperator.java",
    "chars": 283,
    "preview": "package edu.alibaba.mpc4j.common.circuit.operator;\n\n/**\n * dyadic arithmetic circuit operator.\n *\n * @author Weiran Liu\n"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/DyadicBcOperator.java",
    "chars": 278,
    "preview": "package edu.alibaba.mpc4j.common.circuit.operator;\n\n/**\n * dyadic Boolean circuit operator.\n *\n * @author Weiran Liu\n * "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/UnaryAcOperator.java",
    "chars": 209,
    "preview": "package edu.alibaba.mpc4j.common.circuit.operator;\n\n/**\n * unary Arithmetic circuit operator.\n *\n * @author Weiran Liu\n "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/UnaryBcOperator.java",
    "chars": 206,
    "preview": "package edu.alibaba.mpc4j.common.circuit.operator;\n\n/**\n * unary Boolean circuit operator.\n *\n * @author Weiran Liu\n * @"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/operator/Z2IntegerOperator.java",
    "chars": 449,
    "preview": "package edu.alibaba.mpc4j.common.circuit.operator;\n\n/**\n * Integer Operator.\n *\n * @author Li Peng\n * @date 2023/4/21\n *"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/AbstractPrefixTree.java",
    "chars": 368,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\n/**\n * Abstract prefix tree.\n *\n * @author Li Peng\n * @date 2023/10/27"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/BrentKungTree.java",
    "chars": 4163,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alib"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/KoggeStoneTree.java",
    "chars": 1006,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\n\nimport java.ut"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixNode.java",
    "chars": 162,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\n/**\n * Prefix nodes.\n *\n * @author Li Peng\n * @date 2023/10/27\n */\npub"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixOp.java",
    "chars": 1440,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\n\nimport java.ut"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixTree.java",
    "chars": 445,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\n\n/**\n * Prefix "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/PrefixTreeFactory.java",
    "chars": 1961,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\n/**\n * Prefix tree factory.\n *\n * @author Li Peng\n * @date 2023/10/27\n"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/prefix/SklanskyTree.java",
    "chars": 2895,
    "preview": "package edu.alibaba.mpc4j.common.circuit.prefix;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alib"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/AbstractZ2Circuit.java",
    "chars": 1923,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/MpcZ2Vector.java",
    "chars": 4953,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.MpcVector;\nimport edu.alibaba.mpc4"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/MpcZ2cParty.java",
    "chars": 12656,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/PlainZ2Vector.java",
    "chars": 6510,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.utils.Z2VectorUtils;\nimport edu"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/PlainZ2cParty.java",
    "chars": 9045,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/Z2CircuitConfig.java",
    "chars": 4263,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.CircuitConfig;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuit.java",
    "chars": 7003,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.adder.Adder;\nimport edu.alibaba"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/AbstractAdder.java",
    "chars": 989,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.adder;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\nimport"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/Adder.java",
    "chars": 1086,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.adder;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu.a"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/AdderFactory.java",
    "chars": 2454,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.adder;\n\nimport edu.alibaba.mpc4j.common.circuit.prefix.PrefixTreeFactory.Pre"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/ParallelPrefixAdder.java",
    "chars": 7348,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.adder;\n\nimport edu.alibaba.mpc4j.common.circuit.prefix.PrefixNode;\nimport ed"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/adder/RippleCarryAdder.java",
    "chars": 2020,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.adder;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu.a"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/Comparator.java",
    "chars": 661,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.comparator;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/ComparatorFactory.java",
    "chars": 1664,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.comparator;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.Z2IntegerCircuit;\nim"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/SerialComparator.java",
    "chars": 1276,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.comparator;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\ni"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/comparator/TreeComparator.java",
    "chars": 4912,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.comparator;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\ni"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/AbstractMultiplier.java",
    "chars": 536,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.multiplier;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\ni"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/Multiplier.java",
    "chars": 608,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.multiplier;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/MultiplierFactory.java",
    "chars": 1068,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.multiplier;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.Z2IntegerCircuit;\n\n/"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/multiplier/ShiftAddMultiplier.java",
    "chars": 2032,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.multiplier;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport "
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/AbstractPermutationSorter.java",
    "chars": 972,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.psorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\nimpo"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/Psorter.java",
    "chars": 2720,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.psorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/PsorterFactory.java",
    "chars": 900,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.psorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.Z2IntegerCircuit;\nimpor"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/psorter/bitonic/PermutableBitonicSorter.java",
    "chars": 12262,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.psorter.bitonic;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nim"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/AbstractSorter.java",
    "chars": 998,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.AbstractZ2Circuit;\nimpor"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/AbstractSortingNetwork.java",
    "chars": 1709,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/BitonicSorter.java",
    "chars": 2412,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/RandomizedShellSorter.java",
    "chars": 4415,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/Sorter.java",
    "chars": 788,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/sorter/SorterFactory.java",
    "chars": 1211,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.sorter;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.Z2IntegerCircuit;\nimport"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/z2/utils/Z2VectorUtils.java",
    "chars": 13012,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2.utils;\n\nimport edu.alibaba.mpc4j.common.circuit.z2.MpcZ2Vector;\nimport edu.a"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/MpcZlVector.java",
    "chars": 598,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport edu.alibaba.mpc4j.common.circuit.MpcVector;\nimport edu.alibaba.mpc4"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/MpcZlcParty.java",
    "chars": 6919,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/PlainZlVector.java",
    "chars": 3703,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport edu.alibaba.mpc4j.common.structure.vector.Vector;\nimport edu.alibab"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl/PlainZlcParty.java",
    "chars": 9301,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/MpcZl64Vector.java",
    "chars": 631,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl64;\n\nimport edu.alibaba.mpc4j.common.circuit.MpcVector;\nimport edu.alibaba.mp"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/MpcZl64cParty.java",
    "chars": 7042,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl64;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibab"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/PlainZl64Vector.java",
    "chars": 3875,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl64;\n\nimport edu.alibaba.mpc4j.common.structure.vector.Vector;\nimport edu.alib"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zl64/PlainZl64cParty.java",
    "chars": 9638,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl64;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.co"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/MpcLongParty.java",
    "chars": 10082,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zlong;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.aliba"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/MpcLongVector.java",
    "chars": 740,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zlong;\n\nimport edu.alibaba.mpc4j.common.circuit.MpcVector;\nimport edu.alibaba.m"
  },
  {
    "path": "mpc4j-common-circuit/src/main/java/edu/alibaba/mpc4j/common/circuit/zlong/PlainLongVector.java",
    "chars": 3493,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zlong;\n\nimport edu.alibaba.mpc4j.common.structure.vector.LongVector;\nimport edu"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/BatchPlainZ2PartyTest.java",
    "chars": 5379,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.operator.DyadicAcOperator;\nimport "
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/SinglePlainZ2PartyTest.java",
    "chars": 4351,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.operator.DyadicAcOperator;\nimport "
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2AdderTest.java",
    "chars": 6132,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2CircuitTestUtils.java",
    "chars": 4615,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.operator.Z2IntegerOperator;\nimport"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2ComparatorTest.java",
    "chars": 6123,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuitParty.java",
    "chars": 3287,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.operator.Z2IntegerOperator;\nimport"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2IntegerCircuitTest.java",
    "chars": 5093,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport edu.alibaba.mpc4j.common.circuit.operator.Z2IntegerOperator;\nimport"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2MultiplierTest.java",
    "chars": 5523,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2PsorterTest.java",
    "chars": 6346,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/z2/Z2SorterTest.java",
    "chars": 6205,
    "preview": "package edu.alibaba.mpc4j.common.circuit.z2;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/zl/BatchPlainZlPartyTest.java",
    "chars": 6703,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/java/edu/alibaba/mpc4j/common/circuit/zl/SinglePlainZlPartyTest.java",
    "chars": 5626,
    "preview": "package edu.alibaba.mpc4j.common.circuit.zl;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.comm"
  },
  {
    "path": "mpc4j-common-circuit/src/test/resources/log4j.properties",
    "chars": 250,
    "preview": "log4j.rootLogger=INFO,consoleAppender\n\nlog4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender\nlog4j.appender.co"
  },
  {
    "path": "mpc4j-common-data/pom.xml",
    "chars": 1653,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/DataFrameUtils.java",
    "chars": 1071,
    "preview": "package edu.alibaba.mpc4j.common.data;\n\nimport smile.data.DataFrame;\n\nimport java.util.stream.IntStream;\n\n/**\n * 数据帧工具类。"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/DatasetManager.java",
    "chars": 893,
    "preview": "package edu.alibaba.mpc4j.common.data;\n\nimport com.google.common.base.Preconditions;\nimport org.apache.commons.csv.CSVFo"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/BreastCancer.java",
    "chars": 4263,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/Iris.java",
    "chars": 2669,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/PenDigits.java",
    "chars": 4250,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/classification/Weather.java",
    "chars": 3099,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Abalone.java",
    "chars": 4043,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/AutoMpg.java",
    "chars": 4815,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/BostonHousing.java",
    "chars": 3367,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Cpu.java",
    "chars": 2641,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/main/java/edu/alibaba/mpc4j/common/data/regression/Kin8nm.java",
    "chars": 3204,
    "preview": "/*\n * Original Work: Copyright (c) 2010-2021 Haifeng Li. All rights reserved.\n * Modified Work: Copyright 2021-2022 Weir"
  },
  {
    "path": "mpc4j-common-data/src/test/java/edu/alibaba/mpc4j/common/data/DatasetTest.java",
    "chars": 2077,
    "preview": "package edu.alibaba.mpc4j.common.data;\n\nimport edu.alibaba.mpc4j.common.data.classification.BreastCancer;\nimport edu.ali"
  },
  {
    "path": "mpc4j-common-data/src/test/resources/log4j.properties",
    "chars": 250,
    "preview": "log4j.rootLogger=INFO,consoleAppender\n\nlog4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender\nlog4j.appender.co"
  },
  {
    "path": "mpc4j-common-rpc/pom.xml",
    "chars": 1745,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/MpcAbortException.java",
    "chars": 1039,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\n/**\n * MPC中Security with Abort安全模型所抛出的异常。\n *\n * @author Weiran Liu\n * @date 2022/"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/MpcAbortPreconditions.java",
    "chars": 2419,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\nimport com.google.common.annotations.GwtCompatible;\nimport com.google.common.base"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/Party.java",
    "chars": 475,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\n/**\n * 协议参与方接口。\n *\n * @author Weiran Liu\n * @date 2021/12/08\n */\npublic interface"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/PartyState.java",
    "chars": 317,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\n/**\n * Party State.\n *\n * @author Weiran Liu\n * @date 2023/2/9\n */\npublic enum Pa"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/PtoState.java",
    "chars": 431,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\n/**\n * protocol state.\n *\n * @author Weiran Liu\n * @date 2023/2/9\n */\npublic enum"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/Rpc.java",
    "chars": 2714,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\nimport edu.alibaba.mpc4j.common.rpc.utils.DataPacket;\nimport edu.alibaba.mpc4j.co"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/RpcManager.java",
    "chars": 492,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\nimport java.util.Set;\n\n/**\n * RPC管理器,永远简单完成RPC设置。\n *\n * @author Weiran Liu\n * @da"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/RpcPropertiesUtils.java",
    "chars": 2164,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common.rpc."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/PtoDesc.java",
    "chars": 301,
    "preview": "package edu.alibaba.mpc4j.common.rpc.desc;\n\n/**\n * 协议描述信息。\n *\n * @author Weiran Liu\n * @date 2021/12/09\n */\npublic inter"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/PtoDescManager.java",
    "chars": 1086,
    "preview": "package edu.alibaba.mpc4j.common.rpc.desc;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * 协议管理器,防止协议的ID发生冲突。\n "
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/desc/SecurityModel.java",
    "chars": 384,
    "preview": "package edu.alibaba.mpc4j.common.rpc.desc;\n\n/**\n * Security model.\n *\n * @author Weiran Liu\n * @date 2021/12/09\n */\npubl"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileParty.java",
    "chars": 2300,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.file;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FilePtoDesc.java",
    "chars": 1118,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.file;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba.mp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileRpc.java",
    "chars": 13949,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.file;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/file/FileRpcManager.java",
    "chars": 2237,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.file;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryParty.java",
    "chars": 1820,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.memory;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryPtoDesc.java",
    "chars": 1130,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.memory;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryRpc.java",
    "chars": 7968,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.memory;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/memory/MemoryRpcManager.java",
    "chars": 2345,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.memory;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/NettyParty.java",
    "chars": 2468,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/RobustNettyRpc.proto",
    "chars": 2070,
    "preview": "// define proto using proto3 syntax.\nsyntax = \"proto3\";\n// package name for the generated Java file\noption java_package "
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/RobustNettyRpcProtobuf.java",
    "chars": 131464,
    "preview": "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n// source: edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/SimpleNettyRpc.proto",
    "chars": 1139,
    "preview": "// define proto using proto3 syntax.\nsyntax = \"proto3\";\n// package name for the generated Java file\noption java_package "
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/SimpleNettyRpcProtobuf.java",
    "chars": 131363,
    "preview": "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n// source: SimpleNettyRpc.proto\n\npackage edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/protobuf/readme.md",
    "chars": 864,
    "preview": "# ProtoBuf是什么\n\nProtoBuf是一套类似JSON和XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时,所传递的信息通过ProtoBuf定义的数据结构打包,然后编译成二进制的码流再进行传输或者存储。\n\nP"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustChunkAssembler.java",
    "chars": 8903,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustN"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataReceiveHandler.java",
    "chars": 3280,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport edu.alibaba.mpc4j.common.rpc.impl.netty.protobuf.RobustN"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataReceiveThread.java",
    "chars": 5454,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport edu.alibaba.mpc4j.common.rpc.impl.netty.NettyParty;\nimpo"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataSendHandler.java",
    "chars": 1549,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport io.netty.channel.ChannelHandler;\nimport io.netty.channel"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustDataSendManager.java",
    "chars": 9761,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyPtoDesc.java",
    "chars": 1562,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.al"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpc.java",
    "chars": 18386,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport com.google.common.base.Preconditions;\nimport com.google."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpcManager.java",
    "chars": 3018,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataReceiveHandler.java",
    "chars": 4057,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport com.google.protobuf.ByteString;\nimport edu.alibaba.mpc4j"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataReceiveThread.java",
    "chars": 5192,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport edu.alibaba.mpc4j.common.rpc.impl.netty.NettyParty;\nimpo"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataSendHandler.java",
    "chars": 1345,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport io.netty.channel.ChannelHandler;\nimport io.netty.channel"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleDataSendManager.java",
    "chars": 6765,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyPtoDesc.java",
    "chars": 1495,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.al"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpc.java",
    "chars": 18705,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport com.google.common.base.Preconditions;\nimport com.google."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpcManager.java",
    "chars": 2665,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/AbstractMainTwoPartyPto.java",
    "chars": 1860,
    "preview": "package edu.alibaba.mpc4j.common.rpc.main;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba.mp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainParty1Thread.java",
    "chars": 1092,
    "preview": "package edu.alibaba.mpc4j.common.rpc.main;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.r"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainParty2Thread.java",
    "chars": 1092,
    "preview": "package edu.alibaba.mpc4j.common.rpc.main;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.r"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainPtoConfigUtils.java",
    "chars": 6154,
    "preview": "package edu.alibaba.mpc4j.common.rpc.main;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.SecurityModel;\nimport edu.alibaba.m"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/main/MainTwoPartyPto.java",
    "chars": 1177,
    "preview": "package edu.alibaba.mpc4j.common.rpc.main;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\nimport edu.alibaba.mp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractMultiPartyPto.java",
    "chars": 20908,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.rp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractMultiPartyPtoConfig.java",
    "chars": 1988,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractThreePartyMemoryRpcPto.java",
    "chars": 2642,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractThreePartyPto.java",
    "chars": 852,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.rp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyAidPto.java",
    "chars": 4877,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.rp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyMemoryRpcPto.java",
    "chars": 3081,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common."
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/AbstractTwoPartyPto.java",
    "chars": 3149,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.rp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/MultiPartyPto.java",
    "chars": 2741,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.rp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/MultiPartyPtoConfig.java",
    "chars": 604,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.SecurityModel;\nimport edu.alibaba.mp"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/PtoFactory.java",
    "chars": 144,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\n/**\n * 协议工厂接口。\n *\n * @author Weiran Liu\n * @date 2022/10/19\n */\npublic interf"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/ThreePartyPto.java",
    "chars": 518,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\n\n/**\n * Three-party protocol.\n *\n "
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/TwoPartyAidPto.java",
    "chars": 528,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.MpcAbortException;\n\n/**\n * two party aid "
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/pto/TwoPartyPto.java",
    "chars": 377,
    "preview": "package edu.alibaba.mpc4j.common.rpc.pto;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\n\n/**\n * Two-party protocol interfa"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacket.java",
    "chars": 3400,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport org.apache.commons.lang3.builder.EqualsBuilder;\nimport org.apache.co"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBuffer.java",
    "chars": 3786,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.Co"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketHeader.java",
    "chars": 4779,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport edu.alibaba.mpc4j.common.tool.MathPreconditions;\nimport org.apache.c"
  },
  {
    "path": "mpc4j-common-rpc/src/main/java/edu/alibaba/mpc4j/common/rpc/utils/PayloadType.java",
    "chars": 353,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\n/**\n * payload type.\n *\n * @author Weiran Liu\n * @date 2024/1/5\n */\npublic "
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/RpcTestUtils.java",
    "chars": 2609,
    "preview": "package edu.alibaba.mpc4j.common.rpc;\n\nimport java.math.BigInteger;\n\n/**\n * RPC测试工具类。\n *\n * @author Weiran Liu\n * @date "
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcConnectTest.java",
    "chars": 6643,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcImplTestPtoDesc.java",
    "chars": 1588,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba.mpc4j.c"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcImplTestUtils.java",
    "chars": 8771,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.r"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcSendRecvTest.java",
    "chars": 4054,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl;\n\nimport com.google.common.base.Preconditions;\nimport edu.alibaba.mpc4j.common"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/RpcSendRecvThread.java",
    "chars": 17153,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common.r"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustChunkAssemblerTest.java",
    "chars": 9731,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport com.google.protobuf.ByteString;\nimport edu.alibaba.mpc4j"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/robust/RobustNettyRpcTest.java",
    "chars": 12828,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.robust;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.m"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/impl/netty/simple/SimpleNettyRpcTest.java",
    "chars": 2533,
    "preview": "package edu.alibaba.mpc4j.common.rpc.impl.netty.simple;\n\nimport edu.alibaba.mpc4j.common.rpc.impl.RpcImplTestUtils;\nimpo"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferParty1Thread.java",
    "chars": 3359,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba.mpc4j."
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferParty2Thread.java",
    "chars": 3352,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba.mpc4j."
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketBufferTest.java",
    "chars": 2052,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.util.List;\nimp"
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketTest.java",
    "chars": 7831,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport edu.alibaba.mpc4j.common.rpc.Party;\nimport edu.alibaba.mpc4j.common."
  },
  {
    "path": "mpc4j-common-rpc/src/test/java/edu/alibaba/mpc4j/common/rpc/utils/DataPacketTestPtoDesc.java",
    "chars": 1315,
    "preview": "package edu.alibaba.mpc4j.common.rpc.utils;\n\nimport edu.alibaba.mpc4j.common.rpc.desc.PtoDesc;\nimport edu.alibaba.mpc4j."
  },
  {
    "path": "mpc4j-common-rpc/src/test/resources/log4j.properties",
    "chars": 250,
    "preview": "log4j.rootLogger=INFO,consoleAppender\n\nlog4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender\nlog4j.appender.co"
  },
  {
    "path": "mpc4j-common-sampler/pom.xml",
    "chars": 1598,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/Sampler.java",
    "chars": 610,
    "preview": "package edu.alibaba.mpc4j.common.sampler;\n\n/**\n * 采样器接口。\n *\n * @author Weiran Liu\n * @date 2021/07/30\n */\npublic interfa"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/SecureNoiseMath.java",
    "chars": 6223,
    "preview": "//\n// Copyright 2020 Google LLC\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/BinarySampler.java",
    "chars": 323,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary;\n\nimport edu.alibaba.mpc4j.common.sampler.Sampler;\n\n/**\n * Binary sample"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/ApacheBernoulliSampler.java",
    "chars": 1645,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary.bernoulli;\n\nimport edu.alibaba.mpc4j.common.tool.utils.DoubleUtils;\nimpo"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/BernoulliSampler.java",
    "chars": 917,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary.bernoulli;\n\nimport edu.alibaba.mpc4j.common.sampler.binary.BinarySampler"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/ExpBernoulliSampler.java",
    "chars": 3562,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary.bernoulli;\n\nimport edu.alibaba.mpc4j.common.tool.utils.DoubleUtils;\nimpo"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/bernoulli/SecureBernoulliSampler.java",
    "chars": 1519,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary.bernoulli;\n\nimport edu.alibaba.mpc4j.common.tool.utils.DoubleUtils;\nimpo"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/binary/others/ExpfBernoulliSampler.java",
    "chars": 3512,
    "preview": "package edu.alibaba.mpc4j.common.sampler.binary.others;\n\nimport edu.alibaba.mpc4j.common.sampler.Sampler;\nimport edu.ali"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/IntegralSampler.java",
    "chars": 293,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral;\n\nimport edu.alibaba.mpc4j.common.sampler.Sampler;\n\n/**\n * 整数采样器接口。\n *"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AbstractDiscGaussSampler.java",
    "chars": 1119,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport java.util.Random;\n\n/**\n * Abstract Discrete Gaussian"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AbstractTauDiscGaussSampler.java",
    "chars": 751,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport java.util.Random;\n\n/**\n * Abstract Discrete Gaussian"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/AliasTauDiscGaussSampler.java",
    "chars": 4691,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport edu.alibaba.mpc4j.common.sampler.binary.bernoulli.Se"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Cks20DiscGaussSampler.java",
    "chars": 2289,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport edu.alibaba.mpc4j.common.sampler.binary.bernoulli.Ex"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Cks20TauDiscGaussSampler.java",
    "chars": 1925,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport java.util.Random;\n\n/**\n * Discrete Gaussian sampling"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/ConvolutionDiscGaussSampler.java",
    "chars": 3743,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport java.util.Arrays;\nimport java.util.Random;\n\n/**\n * T"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSampler.java",
    "chars": 2133,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport edu.alibaba.mpc4j.common.sampler.integral.IntegralSa"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/DiscGaussSamplerFactory.java",
    "chars": 7720,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport edu.alibaba.mpc4j.common.sampler.integral.others.Sig"
  },
  {
    "path": "mpc4j-common-sampler/src/main/java/edu/alibaba/mpc4j/common/sampler/integral/gaussian/Sigma2LogTableDiscGaussSampler.java",
    "chars": 3680,
    "preview": "package edu.alibaba.mpc4j.common.sampler.integral.gaussian;\n\nimport edu.alibaba.mpc4j.common.sampler.binary.others.ExpfB"
  }
]

// ... and 4536 more files (download for full content)

About this extraction

This page contains the full source code of the alibaba-edu/mpc4j GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 4736 files (113.5 MB), approximately 9.8M tokens, and a symbol index with 33608 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!