2.5.75003775 • Published 10 months ago

@ggflutter/sumo v2.5.75003775

Weekly downloads
-
License
-
Repository
github
Last release
10 months ago

SuMo

SuMo is a mutation testing tool for Solidity Smart Contracts. It features 25 Solidity-specific mutation operators, as well as 19 traditional operators.

SuMo was designed to run mutation testing on Solidity projects in a NodeJS environment. It can run test using Truffle, Hardhat, Brownie and Forge. If needed, SuMo can also automatically spawn Ganache instances to guarantee a clean-room testing environment between mutants.

Table of Contents

Installation

To install sumo run npm install @morenabarboni/sumo

Configuration ⚙️

Before using SuMo you must specify your desired configuration in a sumo-config.js in the root directory of your project. The sumo-config.js is automatically generated upon installation.

Here's a simple example of sumo-config.js:

module.exports = {
  buildDir: 'build',
  contractsDir: 'contracts',
  testDir: 'test',
  skipContracts: ['contractName.sol'], // Relative paths from contractsDir
  skipTests: ['testFileName.js'], // Relative paths from testDir
  testingTimeOutInSec: 300,
  network: "none",
  testingFramework: "truffle",
  minimal: false,
  tce: false
}

1) SUT directories

These (optional) fields identify relevant project directories.

FieldDescriptionDefault Value
contractsDirrelative path to the directory of the contracts to be mutatedcontracts
testDirrelative path to the directory of the tests to be evaluatedtest/tests
buildDirrelative path to the directory of the compilation artifactsbuild/out/artifacts

2) Mutation Process

These fields allow to configure the mutation testing process:

FieldDescriptionDefault Value
minimaluse minimal mutation rulesfalse
skipContractsblacklist of relative paths to contract files (or folders)[]
skipTestsblacklist of relative paths to test files (or folders)[]
tceuse the Trivial Compiler Equivalencefalse
testingTimeOutInSecseconds after which a mutant is marked as timed-out during testing300

3) Testing Interface

These fields specify what testing framework and blockchain simulator SuMo should use to conduct mutation testing:

FieldDescriptionAvailable OptionsDefault Value
networkthe blockchain simulator to be usedganache, nonenone
testingFrameworkthe testing framework to be used for compiling and testing the smart contractsbrownie, forge, hardhat, truffle, customtruffle

Truffle and Hardhat

When choosing truffle or hardhat:

  • SuMo will rely on the local truffle or hardhat package installed in the project;
  • The smart contracts will be compiled with a minimal compile command (e.g., truffle compile );
  • The smart contracts will be tested with a minimal test command followed by the bail argument, and (optionally) by a list of test files to be executed (e.g., truffle test ...testFiles -b) .

Brownie

When choosing brownie:

  • SuMo will rely on a local/global brownie installation;
  • The smart contracts will be compiled with a minimal compile command (e.g., brownie compile );
  • The smart contracts will be tested with a minimal test command followed by the exitfirst argument, and (optionally) by a list of test files to be executed (e.g., brownie test ...testFiles --exitfirst) .

Forge

When choosing forge :

  • SuMo will rely on the global installation of foundry;
  • The smart contracts will be compiled with a minimal compile command (e.g., forge build);
  • The smart contracts will be tested with a minimal test command followed by the fail-fast argument, and (optionally) by a list of test files to be executed (e.g., forge test ...testFiles --fail-fast).
  • Make sure that your forge installation is up-to-date to enable --fail-fast.

Custom

  • When choosing custom:
    • SuMo will invoke the compile and test script defined in your package.json. This allows you to customize both scripts and have more control over the testing process;
    • The skipTests list will be overridden by the test script in your package.json. To skip some test files, you can either: 1) append the specific test files you want to run to your test script, or 2) remove the test files to be skipped from the test folder.
    • The --bail/--exitfirst/--fail-fast option should be added to the test script to speed up mutation testing.

CLI Usage

Selecting the Mutation Operators

Before starting the mutation process you can choose which mutation operators to use:

CommandDescriptionUsageExample
listShows the enabled mutation operators.npx/yarn sumo list$ npx sumo list
enableEnables one or more mutation operators. If no operator IDs are specified, all of them are enabled.npx/yarn sumo enable [...ID]$ npx sumo enable $ npx sumo enable AOR BOR
disableDisables one or more mutation operators. If no operator IDs are specified, all of them are disabled.npx/yarn sumo disable [...ID]$ npx sumo disable $ npx sumo disable FVR

Viewing the available mutations

CommandDescriptionUsageExample
lookupGenerates the mutations and saves them to ./sumo/generated.csv without starting mutation testing.npx/yarn sumo lookup$ npx sumo lookup
mutateGenerates the mutations and saves a copy of each .sol mutant to to ./sumo/mutants.npx/yarn sumo mutate$ npx sumo mutate

Running Mutation Testing

CommandDescriptionUsageExample
pretestRuns the test suite on the original smart contracts to check if all tests pass and can be successfully evaluated. Pretest is automatically run when sumo test is executed.npx/yarn sumo pretest$ npx sumo pretest
testStarts the mutation testing process. You can also choose a single mutant / an interval of mutants to be tested by sepcifying <startHash> and (optionally) <endHash>.npx/yarn sumo test <startHash> <endHash>$ npx sumo test $ npx sumo test mbc5e8f56 mbg5t86o6
restoreRestores the SUT files to a clean version. This should be executed if you suddenly interrupt the mutation process. Note that the restore command overwrites your codebase with the files stored in the sumo/baseline folder. If you need to restore the project files, make sure to do so before performing other operations as the baseline is automatically refreshed on subsequent preflight or test runs.$ npx/yarn sumo restore$ npx sumo restore

Viewing the results

SuMo automatically creates a sumo\results folder in the root directory of the project with the following reports:

  • operators.xlsx Results of the mutation testing process grouped by operator
  • results.csv Results of the mutation testing process for each mutant. This synchronous log is updated each time a mutant is assigned a status
  • sumo-log.txt Logs info about the mutation testing process
  • \mutants Mutated .sol contracts generated with sumo mutate

Trivial Compiler Equivalence

The Trivial Compiler Equivalence compares the smart contract bytecode to detect equivalences between mutants and it can only work if: 1. the solc compiler optimization is enabled; 2. no metadata hash is appended to the contract bytecode.

1) TCE for Truffle and Hardhat

If your testingFramework is truffle or hardhat, you must add the following to your truffle-config.js or hardhat.config.js file:

 compilers: {
    solc: {
        optimizer: {
            enabled: true,
            runs: 200
            ...
        },
        metadata: {
              bytecodeHash: "none"
        }
      }
  }

2)TCE for Brownie

If your testingFramework is brownie, you must add the following to your brownie-config.yaml file:

compiler:
    solc:
        optimize: true
        runs: 200

3) TCE for Forge

If your testingFramework is forge you must add the following to your foundry.toml file:

optimizer = true
optimizer-runs = 200

4) TCE for Hybrid Test Suites

If your testingFramework is custom but you still rely on a single testing framework you can refer to the previous sections.

However, if you are using custom to evaluate hybrid test suites (e.g., forge and hardhat) you must make sure that the sumo configuration is consistent.

For example, consider the following package.json scripts:

 scripts: {
    compile: "hardhat compile",
    test "hardhat test --bail && forge test --fail-fast"
 }

If you make SuMo use hardhat to compile the contracts, make sure that the buildDir points to the hardhat compiled artifacts and not to the forge ones, and vice versa.

Mutation Operators 👾

SuMo includes currently 25 Solidity-specific operators and 19 Traditional operators.

Minimal Mutation Rules

Some mutation operators foresee a minimal version:

  • The extended operators are composed of mutation rules capable of generating a more comprehensive collection of mutants. These operators guarantee higher reliability at the price of a more expensive and time-consuming mutation testing process.
  • The minimal operators consist of simplified rules that aim to limit the generation of likely subsumed mutants and speed up the testing process.

By default, SuMo employs the extended operators. However, you can enable the minimal rules from the sumo-config.js file.

Traditional Mutation Operators

OperatorNameMutation ExampleMinimal version available
ACMArgument Change of overloaded Method calloverloadedFunc(a,b); overloadedFunc(a,b,c);N
AORAssignment Operator Replacement+= =Y
BCRDBreak and Continue Replacement and Deletionbreak continue breakN
BLRBoolean Literal Replacementtrue falseN
BORBinary Operator Replacement+ - < >=Y
CBDCatch Block Deletioncatch{} N
CSCConditional Statement Changeif(condition) if(false) else{} N
EREnum Replacemetenum.member1 enum.member2Y
ECSExplicit Conversion to Smaller typeuint256 uint8N
HLRHexadecimal Literal Replacementhex\"01\" hex\"random\"N
ICMIncrements Mirror-= =-N
ILRInteger Literal Replacement1 0N
LCSLoop Statement Changewhile(condition) while(false)N
OLFDOverloaded Function Deletionfunction overloadedF(){} N
ORFDOverridden Function Deletionfunction f() override {} N
SKISuper Keyword Insertionx = getData() x = super.getData()N
SKDSuper Keyword Deletionx = super.getData() x = getData()N
SLRString Literal Replacement"string" ""N
UORDUnary Operator Replacement and Deletion++ -- ! N

Solidity Mutation Operators

OperatorNameMutation ExampleMinimal version available
AVRAddress Value Replacement0x67ED2e5dD3d0... address.this()N
CCDContract Constructor Deletionconstructor(){} N
DLRData Location Keyword Replacementmemory storageN
DODDelete Operator Deletiondelete N
ETREther Transfer function Replacementdelegatecall() call()N
EEDEvent Emission Deletionemit Deposit(...) /*emit Deposit(...)*/N
EHCException Handling Changerequire(...) /*require(...)*/N
FVRFunction Visibility Replacementfunction f() public function f() privateY
GVRGlobal Variable Replacementmsg.value() tx.gasprice()Y
MCRMathematical and Cryptographic function Replacementaddmod mulmod keccak256 basha256N
MODModifier Deletionfunction f() onlyOwner function f()Y
MOIModifier Insertionfunction f() function f() onlyOwnerY
MOCModifier Order Changefunction f() modA modB function f() modB modAY
MORModifier Replacementfunction f() onlyOwner function f() onlyAdminY
OMDOverridden Modifier Deletionmodifier m() override {} N
PKDPayable Keyword Deletionfunction f() payable function f()N
RSDReturn Statement Deletionreturn amount; //return amount;N
RVSReturn Values Swapreturn (1, "msg", 100); return (100, "msg", 1);Y
SFDSelfdestruct Deletionselfdestruct(); //selfdestruct();N
SFISelfdestruct InsertiondoSomething; selfdestruct(); selfdestruct(); doSomething;N
SFRSafeMath Function ReplacementSafeMath.add SafeMath.subY
SCECSwitch Call Expression CastingContract c = Contract(0x86C9...); Contract c = Contract(0x67ED...);N
TORTransaction Origin Replacementmsg.sender tx.originN
VURVariable Unit Replacementwei ether minutes hoursY
VVRVariable Visibility Replacementuint private data; uint public data;Y

Publications

To cite SuMo, please use the following:

@article{BARBONI2022111445,
  title = {SuMo: A mutation testing approach and tool for the Ethereum blockchain},
  journal = {Journal of Systems and Software},
  volume = {193},
  pages = {111445},
  year = {2022},
  issn = {0164-1212},
  doi = {https://doi.org/10.1016/j.jss.2022.111445},
  author = {Morena Barboni and Andrea Morichetta and Andrea Polini}
}
2.5.75003742

10 months ago

2.5.75003741

10 months ago

2.5.75003744

10 months ago

2.5.75003743

10 months ago

2.5.75003740

10 months ago

2.5.75003749

10 months ago

2.5.75003746

10 months ago

2.5.75003745

10 months ago

2.5.75003748

10 months ago

2.5.75003747

10 months ago

2.5.75003753

10 months ago

2.5.75003752

10 months ago

2.5.75003755

10 months ago

2.5.75003754

10 months ago

2.5.75003751

10 months ago

2.5.75003750

10 months ago

2.5.75003757

10 months ago

2.5.75003756

10 months ago

2.5.75003759

10 months ago

2.5.75003758

10 months ago

2.5.7500365

10 months ago

2.5.7500364

10 months ago

2.5.7500363

10 months ago

2.5.7500362

10 months ago

2.5.7500361

10 months ago

2.5.7500360

10 months ago

2.5.75003764

10 months ago

2.5.75003763

10 months ago

2.5.75003766

10 months ago

2.5.75003765

10 months ago

2.5.75003760

10 months ago

2.5.75003762

10 months ago

2.5.75003761

10 months ago

2.5.7500359

10 months ago

2.5.75003768

10 months ago

2.5.7500358

10 months ago

2.5.75003767

10 months ago

2.5.7500357

10 months ago

2.5.75003769

10 months ago

2.5.75003775

10 months ago

2.5.75003774

10 months ago

2.5.75003771

10 months ago

2.5.75003770

10 months ago

2.5.75003773

10 months ago

2.5.75003772

10 months ago

2.5.7500366

10 months ago

2.5.75003667

10 months ago

2.5.75003669

10 months ago

2.5.75003668

10 months ago

2.5.75003670

10 months ago

2.5.75003676

10 months ago

2.5.75003675

10 months ago

2.5.75003678

10 months ago

2.5.75003677

10 months ago

2.5.75003672

10 months ago

2.5.75003671

10 months ago

2.5.75003674

10 months ago

2.5.75003673

10 months ago

2.5.75003679

10 months ago

2.5.75003681

10 months ago

2.5.75003680

10 months ago

2.5.75003687

10 months ago

2.5.75003686

10 months ago

2.5.75003689

10 months ago

2.5.75003688

10 months ago

2.5.75003683

10 months ago

2.5.75003682

10 months ago

2.5.75003685

10 months ago

2.5.75003684

10 months ago

2.5.75003690

10 months ago

2.5.75003692

10 months ago

2.5.75003691

10 months ago

2.5.75003698

10 months ago

2.5.75003697

10 months ago

2.5.75003699

10 months ago

2.5.75003694

10 months ago

2.5.75003693

10 months ago

2.5.75003696

10 months ago

2.5.75003695

10 months ago

2.5.75003700

10 months ago

2.5.75003706

10 months ago

2.5.75003705

10 months ago

2.5.75003708

10 months ago

2.5.75003707

10 months ago

2.5.75003702

10 months ago

2.5.75003701

10 months ago

2.5.75003704

10 months ago

2.5.75003703

10 months ago

2.5.75003709

10 months ago

2.5.75003711

10 months ago

2.5.75003710

10 months ago

2.5.75003717

10 months ago

2.5.75003716

10 months ago

2.5.75003719

10 months ago

2.5.75003718

10 months ago

2.5.75003713

10 months ago

2.5.75003712

10 months ago

2.5.75003715

10 months ago

2.5.75003714

10 months ago

2.5.75003720

10 months ago

2.5.75003722

10 months ago

2.5.75003721

10 months ago

2.5.75003728

10 months ago

2.5.75003727

10 months ago

2.5.75003729

10 months ago

2.5.75003724

10 months ago

2.5.75003723

10 months ago

2.5.75003726

10 months ago

2.5.75003725

10 months ago

2.5.75003731

10 months ago

2.5.75003730

10 months ago

2.5.75003733

10 months ago

2.5.75003732

10 months ago

2.5.75003739

10 months ago

2.5.75003738

10 months ago

2.5.75003735

10 months ago

2.5.75003734

10 months ago

2.5.75003737

10 months ago

2.5.75003736

10 months ago

2.5.75003461

11 months ago

2.5.75003460

11 months ago

2.5.75003467

11 months ago

2.5.75003466

11 months ago

2.5.75003469

11 months ago

2.5.75003468

11 months ago

2.5.75003463

11 months ago

2.5.75003462

11 months ago

2.5.75003465

11 months ago

2.5.75003464

11 months ago

2.5.75003470

11 months ago

2.5.75003472

11 months ago

2.5.75003471

11 months ago

2.5.75003474

11 months ago

2.5.75003473

11 months ago

2.5.75003475

11 months ago

2.5.75003395

11 months ago

2.5.75003394

11 months ago

2.5.75003397

11 months ago

2.5.75003396

11 months ago

2.5.75003399

11 months ago

2.5.75003398

11 months ago

2.5.75003401

11 months ago

2.5.75003400

11 months ago

2.5.75003403

11 months ago

2.5.75003402

11 months ago

2.5.75003409

11 months ago

2.5.75003408

11 months ago

2.5.75003405

11 months ago

2.5.75003404

11 months ago

2.5.75003407

11 months ago

2.5.7500355

11 months ago

2.5.75003406

11 months ago

2.5.75003412

11 months ago

2.5.75003411

11 months ago

2.5.75003414

11 months ago

2.5.75003413

11 months ago

2.5.75003410

11 months ago

2.5.75003419

11 months ago

2.5.75003416

11 months ago

2.5.75003415

11 months ago

2.5.75003418

11 months ago

2.5.75003417

11 months ago

2.5.75003423

11 months ago

2.5.75003422

11 months ago

2.5.75003425

11 months ago

2.5.75003424

11 months ago

2.5.75003421

11 months ago

2.5.75003420

11 months ago

2.5.75003427

11 months ago

2.5.75003426

11 months ago

2.5.75003429

11 months ago

2.5.75003428

11 months ago

2.5.7500354

11 months ago

2.5.7500353

11 months ago

2.5.7500352

11 months ago

2.5.7500351

11 months ago

2.5.7500350

11 months ago

2.5.75003433

11 months ago

2.5.75003436

11 months ago

2.5.75003435

11 months ago

2.5.75003430

11 months ago

2.5.75003432

11 months ago

2.5.75003431

11 months ago

2.5.7500349

11 months ago

2.5.7500348

11 months ago

2.5.7500347

11 months ago

2.5.75003438

11 months ago

2.5.7500346

11 months ago

2.5.75003437

11 months ago

2.5.75003439

11 months ago

2.5.75003445

11 months ago

2.5.75003444

11 months ago

2.5.75003447

11 months ago

2.5.75003446

11 months ago

2.5.75003441

11 months ago

2.5.75003440

11 months ago

2.5.75003443

11 months ago

2.5.75003442

11 months ago

2.5.75003449

11 months ago

2.5.75003448

11 months ago

2.5.75003450

11 months ago

2.5.75003456

11 months ago

2.5.75003455

11 months ago

2.5.75003458

11 months ago

2.5.75003457

11 months ago

2.5.75003452

11 months ago

2.5.75003451

11 months ago

2.5.75003454

11 months ago

2.5.75003453

11 months ago

2.5.75003459

11 months ago

2.5.75003340

11 months ago

2.5.75003346

11 months ago

2.5.75003345

11 months ago

2.5.75003348

11 months ago

2.5.75003347

11 months ago

2.5.75003342

11 months ago

2.5.75003341

11 months ago

2.5.75003344

11 months ago

2.5.75003343

11 months ago

2.5.75003349

11 months ago

2.5.75003351

11 months ago

2.5.75003350

11 months ago

2.5.75003357

11 months ago

2.5.75003356

11 months ago

2.5.75003359

11 months ago

2.5.75003358

11 months ago

2.5.75003353

11 months ago

2.5.75003352

11 months ago

2.5.75003355

11 months ago

2.5.75003354

11 months ago

2.5.75003360

11 months ago

2.5.75003362

11 months ago

2.5.75003361

11 months ago

2.5.75003368

11 months ago

2.5.75003367

11 months ago

2.5.75003369

11 months ago

2.5.75003364

11 months ago

2.5.75003363

11 months ago

2.5.75003366

11 months ago

2.5.75003365

11 months ago

2.5.75003371

11 months ago

2.5.75003370

11 months ago

2.5.75003373

11 months ago

2.5.75003372

11 months ago

2.5.75003379

11 months ago

2.5.75003378

11 months ago

2.5.75003375

11 months ago

2.5.75003374

11 months ago

2.5.75003377

11 months ago

2.5.75003376

11 months ago

2.5.75003382

11 months ago

2.5.75003381

11 months ago

2.5.75003384

11 months ago

2.5.75003383

11 months ago

2.5.75003380

11 months ago

2.5.75003389

11 months ago

2.5.75003386

11 months ago

2.5.75003385

11 months ago

2.5.75003388

11 months ago

2.5.75003387

11 months ago

2.5.75003393

11 months ago

2.5.75003392

11 months ago

2.5.75003391

11 months ago

2.5.75003390

11 months ago

2.5.7500339

11 months ago

2.5.7500338

11 months ago

2.5.7500337

11 months ago

2.5.7500336

11 months ago

2.5.7500335

11 months ago

2.5.7500334

11 months ago

2.5.7500333

11 months ago

2.5.7500332

11 months ago

2.5.7500331

11 months ago

2.5.7500310

11 months ago

2.5.7500309

11 months ago

2.5.7500308

11 months ago

2.5.7500307

11 months ago

2.5.7500306

11 months ago

2.5.7500305

11 months ago

2.5.7500304

11 months ago

2.5.7500303

11 months ago

2.5.7500302

11 months ago

2.5.7500301

11 months ago

2.5.7500300

11 months ago

2.5.7500321

11 months ago

2.5.7500320

11 months ago

2.5.7500319

11 months ago

2.5.7500318

11 months ago

2.5.7500317

11 months ago

2.5.7500316

11 months ago

2.5.7500315

11 months ago

2.5.7500314

11 months ago

2.5.7500313

11 months ago

2.5.7500312

11 months ago

2.5.7500311

11 months ago

2.5.7500330

11 months ago

2.5.7500329

11 months ago

2.5.7500328

11 months ago

2.5.7500327

11 months ago

2.5.7500326

11 months ago

2.5.7500325

11 months ago

2.5.7500324

11 months ago

2.5.7500323

11 months ago

2.5.7500322

11 months ago

2.5.7500288

11 months ago

2.5.7500287

11 months ago

2.5.7500286

11 months ago

2.5.7500285

11 months ago

2.5.7500299

11 months ago

2.5.7500298

11 months ago

2.5.7500297

11 months ago

2.5.7500296

11 months ago

2.5.7500295

11 months ago

2.5.7500294

11 months ago

2.5.7500293

11 months ago

2.5.7500292

11 months ago

2.5.7500291

11 months ago

2.5.7500290

11 months ago

2.5.7500289

11 months ago

2.5.7500266

11 months ago

2.5.7500145

11 months ago

2.5.7500265

11 months ago

2.5.7500144

11 months ago

2.5.7500264

11 months ago

2.5.7500143

11 months ago

2.5.7500263

11 months ago

2.5.7500142

11 months ago

2.5.7500262

11 months ago

2.5.7500261

11 months ago

2.5.7500260

11 months ago

2.5.7500259

11 months ago

2.5.7500258

11 months ago

2.5.7500257

11 months ago

2.5.7500256

11 months ago

2.5.7500277

11 months ago

2.5.7500156

11 months ago

2.5.7500276

11 months ago

2.5.7500155

11 months ago

2.5.7500275

11 months ago

2.5.7500154

11 months ago

2.5.7500274

11 months ago

2.5.7500153

11 months ago

2.5.7500273

11 months ago

2.5.7500152

11 months ago

2.5.7500272

11 months ago

2.5.7500151

11 months ago

2.5.7500271

11 months ago

2.5.7500150

11 months ago

2.5.7500270

11 months ago

2.5.7500149

11 months ago

2.5.7500269

11 months ago

2.5.7500148

11 months ago

2.5.7500268

11 months ago

2.5.7500147

11 months ago

2.5.7500267

11 months ago

2.5.7500146

11 months ago

2.5.7500244

11 months ago

2.5.7500243

11 months ago

2.5.7500242

11 months ago

2.5.7500241

11 months ago

2.5.7500240

11 months ago

2.5.7500239

11 months ago

2.5.7500238

11 months ago

2.5.7500237

11 months ago

2.5.7500236

11 months ago

2.5.7500235

11 months ago

2.5.7500234

11 months ago

2.5.7500255

11 months ago

2.5.7500254

11 months ago

2.5.7500253

11 months ago

2.5.7500252

11 months ago

2.5.7500251

11 months ago

2.5.7500250

11 months ago

2.5.7500249

11 months ago

2.5.7500248

11 months ago

2.5.7500247

11 months ago

2.5.7500246

11 months ago

2.5.7500245

11 months ago

2.5.7500222

11 months ago

2.5.7500221

11 months ago

2.5.7500220

11 months ago

2.5.7500219

11 months ago

2.5.7500218

11 months ago

2.5.7500217

11 months ago

2.5.7500216

11 months ago

2.5.7500215

11 months ago

2.5.7500214

11 months ago

2.5.7500213

11 months ago

2.5.7500212

11 months ago

2.5.7500233

11 months ago

2.5.7500232

11 months ago

2.5.7500231

11 months ago

2.5.7500230

11 months ago

2.5.7500229

11 months ago

2.5.7500228

11 months ago

2.5.7500227

11 months ago

2.5.7500226

11 months ago

2.5.7500225

11 months ago

2.5.7500224

11 months ago

2.5.7500223

11 months ago

2.5.7500200

11 months ago

2.5.7500211

11 months ago

2.5.7500210

11 months ago

2.5.7500209

11 months ago

2.5.7500208

11 months ago

2.5.7500207

11 months ago

2.5.7500206

11 months ago

2.5.7500205

11 months ago

2.5.7500204

11 months ago

2.5.7500203

11 months ago

2.5.7500202

11 months ago

2.5.7500201

11 months ago

2.5.7500189

11 months ago

2.5.7500188

11 months ago

2.5.7500187

11 months ago

2.5.7500186

11 months ago

2.5.7500185

11 months ago

2.5.7500184

11 months ago

2.5.7500183

11 months ago

2.5.7500182

11 months ago

2.5.7500181

11 months ago

2.5.7500180

11 months ago

2.5.7500179

11 months ago

2.5.7500199

11 months ago

2.5.7500198

11 months ago

2.5.7500197

11 months ago

2.5.7500196

11 months ago

2.5.7500195

11 months ago

2.5.7500194

11 months ago

2.5.7500193

11 months ago

2.5.7500192

11 months ago

2.5.7500191

11 months ago

2.5.7500190

11 months ago

2.5.7500167

11 months ago

2.5.7500166

11 months ago

2.5.7500165

11 months ago

2.5.7500164

11 months ago

2.5.7500284

11 months ago

2.5.7500163

11 months ago

2.5.7500283

11 months ago

2.5.7500162

11 months ago

2.5.7500282

11 months ago

2.5.7500161

11 months ago

2.5.7500281

11 months ago

2.5.7500160

11 months ago

2.5.7500280

11 months ago

2.5.7500159

11 months ago

2.5.7500279

11 months ago

2.5.7500158

11 months ago

2.5.7500278

11 months ago

2.5.7500157

11 months ago

2.5.7500178

11 months ago

2.5.7500177

11 months ago

2.5.7500176

11 months ago

2.5.7500175

11 months ago

2.5.7500174

11 months ago

2.5.7500173

11 months ago

2.5.7500172

11 months ago

2.5.7500171

11 months ago

2.5.7500170

11 months ago

2.5.7500169

11 months ago

2.5.7500168

11 months ago

2.5.7500141

12 months ago

2.5.7500140

12 months ago

2.5.7500139

12 months ago

2.5.7500138

12 months ago

2.5.7500137

12 months ago

2.5.7500136

12 months ago

2.5.7500135

12 months ago

2.5.7500134

12 months ago

2.5.7500133

12 months ago

2.5.7500123

12 months ago

2.5.7500122

12 months ago

2.5.7500121

12 months ago

2.5.7500120

12 months ago

2.5.7500119

12 months ago

2.5.7500118

12 months ago

2.5.7500117

12 months ago

2.5.7500116

12 months ago

2.5.7500115

12 months ago

2.5.7500114

12 months ago

2.5.7500113

12 months ago

2.5.7500132

12 months ago

2.5.7500131

12 months ago

2.5.7500130

12 months ago

2.5.7500129

12 months ago

2.5.7500128

12 months ago

2.5.7500127

12 months ago

2.5.7500126

12 months ago

2.5.7500125

12 months ago

2.5.7500124

12 months ago

2.5.7500101

12 months ago

2.5.7500100

12 months ago

2.5.7500112

12 months ago

2.5.7500111

12 months ago

2.5.7500110

12 months ago

2.5.7500109

12 months ago

2.5.7500108

12 months ago

2.5.7500107

12 months ago

2.5.7500106

12 months ago

2.5.7500105

12 months ago

2.5.7500104

12 months ago

2.5.7500103

12 months ago

2.5.7500102

12 months ago

2.5.7500089

12 months ago

2.5.7500088

12 months ago

2.5.7500087

12 months ago

2.5.7500086

12 months ago

2.5.7500085

12 months ago

2.5.7500084

12 months ago

2.5.7500083

12 months ago

2.5.7500082

12 months ago

2.5.7500081

12 months ago

2.5.7500080

12 months ago

2.5.7500099

12 months ago

2.5.7500098

12 months ago

2.5.7500097

12 months ago

2.5.7500096

12 months ago

2.5.7500095

12 months ago

2.5.7500094

12 months ago

2.5.7500093

12 months ago

2.5.7500092

12 months ago

2.5.7500091

12 months ago

2.5.7500090

12 months ago

2.5.7500079

12 months ago

2.5.7500078

12 months ago

2.5.7500077

12 months ago

2.5.7500075

12 months ago

2.5.7500074

12 months ago

2.5.7500073

12 months ago

2.5.7500072

12 months ago

2.5.7500071

12 months ago

2.5.7500070

12 months ago

2.5.7500069

12 months ago

2.5.7500035

12 months ago

2.5.7500068

12 months ago

2.5.7500067

12 months ago

2.5.7500066

12 months ago

2.5.7500065

12 months ago

2.5.7500064

12 months ago

2.5.7500063

12 months ago

2.5.7500062

12 months ago

2.5.7500061

12 months ago

2.5.7500060

12 months ago

2.5.7500059

12 months ago

2.5.7500058

12 months ago

2.5.7500046

12 months ago

2.5.7500045

12 months ago

2.5.7500044

12 months ago

2.5.7500043

12 months ago

2.5.7500042

12 months ago

2.5.7500041

12 months ago

2.5.7500040

12 months ago

2.5.7500039

12 months ago

2.5.7500038

12 months ago

2.5.7500037

12 months ago

2.5.7500036

12 months ago

2.5.7500057

12 months ago

2.5.7500056

12 months ago

2.5.7500055

12 months ago

2.5.7500054

12 months ago

2.5.7500053

12 months ago

2.5.7500052

12 months ago

2.5.7500051

12 months ago

2.5.7500050

12 months ago

2.5.7500049

12 months ago

2.5.7500048

12 months ago

2.5.7500047

12 months ago

2.5.7500023

12 months ago

2.5.7500022

12 months ago

2.5.7500021

12 months ago

2.5.7500020

12 months ago

2.5.7500019

12 months ago

2.5.7500018

12 months ago

2.5.7500017

12 months ago

2.5.7500016

12 months ago

2.5.7500015

12 months ago

2.5.7500034

12 months ago

2.5.7500033

12 months ago

2.5.7500032

12 months ago

2.5.7500031

12 months ago

2.5.7500030

12 months ago

2.5.7500029

12 months ago

2.5.7500028

12 months ago

2.5.7500027

12 months ago

2.5.7500026

12 months ago

2.5.7500025

12 months ago

2.5.7500014

12 months ago

2.5.7500013

12 months ago

2.5.7500012

12 months ago

2.5.7500011

12 months ago

2.5.7500010

12 months ago

2.5.7500009

1 year ago

2.5.7500008

1 year ago

2.5.7500007

1 year ago

2.5.7500006

1 year ago

2.5.7500005

1 year ago

2.5.7500004

1 year ago

2.5.74995

1 year ago

2.5.74999

1 year ago

2.5.74998

1 year ago

2.5.74997

1 year ago

2.5.74996

1 year ago

2.5.749993

1 year ago

2.5.749994

1 year ago

2.5.749995

1 year ago

2.5.749996

1 year ago

2.5.749991

1 year ago

2.5.749992

1 year ago

2.5.7499991

1 year ago

2.5.749997

1 year ago

2.5.749998

1 year ago

2.5.749999

1 year ago

2.5.7500002

1 year ago

2.5.7500001

1 year ago

2.5.7499992

1 year ago

2.5.7499993

1 year ago

2.5.7499994

1 year ago

2.5.7499995

1 year ago

2.5.7499996

1 year ago

2.5.7499998

1 year ago

2.5.7500003

1 year ago

2.5.74994

1 year ago

2.5.7499

1 year ago

2.5.74993

1 year ago

2.5.7498

1 year ago

2.5.74992

1 year ago

2.5.7497

1 year ago

2.5.747

1 year ago

2.5.748

1 year ago

2.5.749

1 year ago

2.5.7492

1 year ago

2.5.7491

1 year ago

2.5.7496

1 year ago

2.5.7495

1 year ago

2.5.7494

1 year ago

2.5.7493

1 year ago

2.5.74991

1 year ago

2.5.746

1 year ago

2.5.745

1 year ago

2.5.744

1 year ago

2.5.743

1 year ago

2.5.742

1 year ago

2.5.741

1 year ago

2.5.740

1 year ago

2.5.739

1 year ago

2.5.738

1 year ago

2.5.737

1 year ago

2.5.736

1 year ago

2.5.735

1 year ago

2.5.734

1 year ago

2.5.733

1 year ago

2.5.732

1 year ago

2.5.731

1 year ago

2.5.730

1 year ago

2.5.729

1 year ago

2.5.728

1 year ago

2.5.727

1 year ago

2.5.726

1 year ago

2.5.725

1 year ago

2.5.724

1 year ago

2.5.723

1 year ago

2.5.722

1 year ago

2.5.721

1 year ago

2.5.720

1 year ago

2.5.719

1 year ago

2.5.718

1 year ago

2.5.717

1 year ago

2.5.716

1 year ago

2.5.715

1 year ago

2.5.714

1 year ago

2.5.713

1 year ago

2.5.712

1 year ago

2.5.711

1 year ago

2.5.710

1 year ago

2.5.709

1 year ago

2.5.708

1 year ago

2.5.707

1 year ago

2.5.706

1 year ago

2.5.704

1 year ago

2.5.703

1 year ago

2.5.702

1 year ago

2.5.701

1 year ago

2.5.7

1 year ago

2.5.6

1 year ago

2.5.5

1 year ago