2.5.75003775 • Published 11 months ago

@ggflutter/sumo v2.5.75003775

Weekly downloads
-
License
-
Repository
github
Last release
11 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

11 months ago

2.5.75003741

11 months ago

2.5.75003744

11 months ago

2.5.75003743

11 months ago

2.5.75003740

11 months ago

2.5.75003749

11 months ago

2.5.75003746

11 months ago

2.5.75003745

11 months ago

2.5.75003748

11 months ago

2.5.75003747

11 months ago

2.5.75003753

11 months ago

2.5.75003752

11 months ago

2.5.75003755

11 months ago

2.5.75003754

11 months ago

2.5.75003751

11 months ago

2.5.75003750

11 months ago

2.5.75003757

11 months ago

2.5.75003756

11 months ago

2.5.75003759

11 months ago

2.5.75003758

11 months ago

2.5.7500365

12 months ago

2.5.7500364

12 months ago

2.5.7500363

12 months ago

2.5.7500362

12 months ago

2.5.7500361

12 months ago

2.5.7500360

12 months ago

2.5.75003764

11 months ago

2.5.75003763

11 months ago

2.5.75003766

11 months ago

2.5.75003765

11 months ago

2.5.75003760

11 months ago

2.5.75003762

11 months ago

2.5.75003761

11 months ago

2.5.7500359

12 months ago

2.5.75003768

11 months ago

2.5.7500358

12 months ago

2.5.75003767

11 months ago

2.5.7500357

12 months ago

2.5.75003769

11 months ago

2.5.75003775

11 months ago

2.5.75003774

11 months ago

2.5.75003771

11 months ago

2.5.75003770

11 months ago

2.5.75003773

11 months ago

2.5.75003772

11 months ago

2.5.7500366

12 months ago

2.5.75003667

12 months ago

2.5.75003669

12 months ago

2.5.75003668

12 months ago

2.5.75003670

12 months ago

2.5.75003676

11 months ago

2.5.75003675

11 months ago

2.5.75003678

11 months ago

2.5.75003677

11 months ago

2.5.75003672

11 months ago

2.5.75003671

12 months ago

2.5.75003674

11 months ago

2.5.75003673

11 months ago

2.5.75003679

11 months ago

2.5.75003681

11 months ago

2.5.75003680

11 months ago

2.5.75003687

11 months ago

2.5.75003686

11 months ago

2.5.75003689

11 months ago

2.5.75003688

11 months ago

2.5.75003683

11 months ago

2.5.75003682

11 months ago

2.5.75003685

11 months ago

2.5.75003684

11 months ago

2.5.75003690

11 months ago

2.5.75003692

11 months ago

2.5.75003691

11 months ago

2.5.75003698

11 months ago

2.5.75003697

11 months ago

2.5.75003699

11 months ago

2.5.75003694

11 months ago

2.5.75003693

11 months ago

2.5.75003696

11 months ago

2.5.75003695

11 months ago

2.5.75003700

11 months ago

2.5.75003706

11 months ago

2.5.75003705

11 months ago

2.5.75003708

11 months ago

2.5.75003707

11 months ago

2.5.75003702

11 months ago

2.5.75003701

11 months ago

2.5.75003704

11 months ago

2.5.75003703

11 months ago

2.5.75003709

11 months ago

2.5.75003711

11 months ago

2.5.75003710

11 months ago

2.5.75003717

11 months ago

2.5.75003716

11 months ago

2.5.75003719

11 months ago

2.5.75003718

11 months ago

2.5.75003713

11 months ago

2.5.75003712

11 months ago

2.5.75003715

11 months ago

2.5.75003714

11 months ago

2.5.75003720

11 months ago

2.5.75003722

11 months ago

2.5.75003721

11 months ago

2.5.75003728

11 months ago

2.5.75003727

11 months ago

2.5.75003729

11 months ago

2.5.75003724

11 months ago

2.5.75003723

11 months ago

2.5.75003726

11 months ago

2.5.75003725

11 months ago

2.5.75003731

11 months ago

2.5.75003730

11 months ago

2.5.75003733

11 months ago

2.5.75003732

11 months ago

2.5.75003739

11 months ago

2.5.75003738

11 months ago

2.5.75003735

11 months ago

2.5.75003734

11 months ago

2.5.75003737

11 months ago

2.5.75003736

11 months ago

2.5.75003461

12 months ago

2.5.75003460

12 months ago

2.5.75003467

12 months ago

2.5.75003466

12 months ago

2.5.75003469

12 months ago

2.5.75003468

12 months ago

2.5.75003463

12 months ago

2.5.75003462

12 months ago

2.5.75003465

12 months ago

2.5.75003464

12 months ago

2.5.75003470

12 months ago

2.5.75003472

12 months ago

2.5.75003471

12 months ago

2.5.75003474

12 months ago

2.5.75003473

12 months ago

2.5.75003475

12 months ago

2.5.75003395

12 months ago

2.5.75003394

12 months ago

2.5.75003397

12 months ago

2.5.75003396

12 months ago

2.5.75003399

12 months ago

2.5.75003398

12 months ago

2.5.75003401

12 months ago

2.5.75003400

12 months ago

2.5.75003403

12 months ago

2.5.75003402

12 months ago

2.5.75003409

12 months ago

2.5.75003408

12 months ago

2.5.75003405

12 months ago

2.5.75003404

12 months ago

2.5.75003407

12 months ago

2.5.7500355

12 months ago

2.5.75003406

12 months ago

2.5.75003412

12 months ago

2.5.75003411

12 months ago

2.5.75003414

12 months ago

2.5.75003413

12 months ago

2.5.75003410

12 months ago

2.5.75003419

12 months ago

2.5.75003416

12 months ago

2.5.75003415

12 months ago

2.5.75003418

12 months ago

2.5.75003417

12 months ago

2.5.75003423

12 months ago

2.5.75003422

12 months ago

2.5.75003425

12 months ago

2.5.75003424

12 months ago

2.5.75003421

12 months ago

2.5.75003420

12 months ago

2.5.75003427

12 months ago

2.5.75003426

12 months ago

2.5.75003429

12 months ago

2.5.75003428

12 months ago

2.5.7500354

12 months ago

2.5.7500353

12 months ago

2.5.7500352

12 months ago

2.5.7500351

12 months ago

2.5.7500350

12 months ago

2.5.75003433

12 months ago

2.5.75003436

12 months ago

2.5.75003435

12 months ago

2.5.75003430

12 months ago

2.5.75003432

12 months ago

2.5.75003431

12 months ago

2.5.7500349

12 months ago

2.5.7500348

12 months ago

2.5.7500347

12 months ago

2.5.75003438

12 months ago

2.5.7500346

12 months ago

2.5.75003437

12 months ago

2.5.75003439

12 months ago

2.5.75003445

12 months ago

2.5.75003444

12 months ago

2.5.75003447

12 months ago

2.5.75003446

12 months ago

2.5.75003441

12 months ago

2.5.75003440

12 months ago

2.5.75003443

12 months ago

2.5.75003442

12 months ago

2.5.75003449

12 months ago

2.5.75003448

12 months ago

2.5.75003450

12 months ago

2.5.75003456

12 months ago

2.5.75003455

12 months ago

2.5.75003458

12 months ago

2.5.75003457

12 months ago

2.5.75003452

12 months ago

2.5.75003451

12 months ago

2.5.75003454

12 months ago

2.5.75003453

12 months ago

2.5.75003459

12 months ago

2.5.75003340

12 months ago

2.5.75003346

12 months ago

2.5.75003345

12 months ago

2.5.75003348

12 months ago

2.5.75003347

12 months ago

2.5.75003342

12 months ago

2.5.75003341

12 months ago

2.5.75003344

12 months ago

2.5.75003343

12 months ago

2.5.75003349

12 months ago

2.5.75003351

12 months ago

2.5.75003350

12 months ago

2.5.75003357

12 months ago

2.5.75003356

12 months ago

2.5.75003359

12 months ago

2.5.75003358

12 months ago

2.5.75003353

12 months ago

2.5.75003352

12 months ago

2.5.75003355

12 months ago

2.5.75003354

12 months ago

2.5.75003360

12 months ago

2.5.75003362

12 months ago

2.5.75003361

12 months ago

2.5.75003368

12 months ago

2.5.75003367

12 months ago

2.5.75003369

12 months ago

2.5.75003364

12 months ago

2.5.75003363

12 months ago

2.5.75003366

12 months ago

2.5.75003365

12 months ago

2.5.75003371

12 months ago

2.5.75003370

12 months ago

2.5.75003373

12 months ago

2.5.75003372

12 months ago

2.5.75003379

12 months ago

2.5.75003378

12 months ago

2.5.75003375

12 months ago

2.5.75003374

12 months ago

2.5.75003377

12 months ago

2.5.75003376

12 months ago

2.5.75003382

12 months ago

2.5.75003381

12 months ago

2.5.75003384

12 months ago

2.5.75003383

12 months ago

2.5.75003380

12 months ago

2.5.75003389

12 months ago

2.5.75003386

12 months ago

2.5.75003385

12 months ago

2.5.75003388

12 months ago

2.5.75003387

12 months ago

2.5.75003393

12 months ago

2.5.75003392

12 months ago

2.5.75003391

12 months ago

2.5.75003390

12 months ago

2.5.7500339

12 months ago

2.5.7500338

12 months ago

2.5.7500337

12 months ago

2.5.7500336

12 months ago

2.5.7500335

12 months ago

2.5.7500334

12 months ago

2.5.7500333

12 months ago

2.5.7500332

12 months ago

2.5.7500331

12 months ago

2.5.7500310

12 months ago

2.5.7500309

12 months ago

2.5.7500308

12 months ago

2.5.7500307

12 months ago

2.5.7500306

12 months ago

2.5.7500305

12 months ago

2.5.7500304

12 months ago

2.5.7500303

12 months ago

2.5.7500302

12 months ago

2.5.7500301

12 months ago

2.5.7500300

12 months ago

2.5.7500321

12 months ago

2.5.7500320

12 months ago

2.5.7500319

12 months ago

2.5.7500318

12 months ago

2.5.7500317

12 months ago

2.5.7500316

12 months ago

2.5.7500315

12 months ago

2.5.7500314

12 months ago

2.5.7500313

12 months ago

2.5.7500312

12 months ago

2.5.7500311

12 months ago

2.5.7500330

12 months ago

2.5.7500329

12 months ago

2.5.7500328

12 months ago

2.5.7500327

12 months ago

2.5.7500326

12 months ago

2.5.7500325

12 months ago

2.5.7500324

12 months ago

2.5.7500323

12 months ago

2.5.7500322

12 months ago

2.5.7500288

12 months ago

2.5.7500287

12 months ago

2.5.7500286

12 months ago

2.5.7500285

12 months ago

2.5.7500299

12 months ago

2.5.7500298

12 months ago

2.5.7500297

12 months ago

2.5.7500296

12 months ago

2.5.7500295

12 months ago

2.5.7500294

12 months ago

2.5.7500293

12 months ago

2.5.7500292

12 months ago

2.5.7500291

12 months ago

2.5.7500290

12 months ago

2.5.7500289

12 months ago

2.5.7500266

12 months ago

2.5.7500145

1 year ago

2.5.7500265

12 months ago

2.5.7500144

1 year ago

2.5.7500264

12 months ago

2.5.7500143

1 year ago

2.5.7500263

12 months ago

2.5.7500142

1 year ago

2.5.7500262

12 months ago

2.5.7500261

12 months ago

2.5.7500260

12 months ago

2.5.7500259

12 months ago

2.5.7500258

12 months ago

2.5.7500257

12 months ago

2.5.7500256

12 months ago

2.5.7500277

12 months ago

2.5.7500156

1 year ago

2.5.7500276

12 months ago

2.5.7500155

1 year ago

2.5.7500275

12 months ago

2.5.7500154

1 year ago

2.5.7500274

12 months ago

2.5.7500153

1 year ago

2.5.7500273

12 months ago

2.5.7500152

1 year ago

2.5.7500272

12 months ago

2.5.7500151

1 year ago

2.5.7500271

12 months ago

2.5.7500150

1 year ago

2.5.7500270

12 months ago

2.5.7500149

1 year ago

2.5.7500269

12 months ago

2.5.7500148

1 year ago

2.5.7500268

12 months ago

2.5.7500147

1 year ago

2.5.7500267

12 months ago

2.5.7500146

1 year ago

2.5.7500244

12 months ago

2.5.7500243

12 months ago

2.5.7500242

12 months ago

2.5.7500241

12 months ago

2.5.7500240

12 months ago

2.5.7500239

12 months ago

2.5.7500238

12 months ago

2.5.7500237

12 months ago

2.5.7500236

12 months ago

2.5.7500235

12 months ago

2.5.7500234

12 months ago

2.5.7500255

12 months ago

2.5.7500254

12 months ago

2.5.7500253

12 months ago

2.5.7500252

12 months ago

2.5.7500251

12 months ago

2.5.7500250

12 months ago

2.5.7500249

12 months ago

2.5.7500248

12 months ago

2.5.7500247

12 months ago

2.5.7500246

12 months ago

2.5.7500245

12 months ago

2.5.7500222

12 months ago

2.5.7500221

1 year ago

2.5.7500220

1 year ago

2.5.7500219

1 year ago

2.5.7500218

1 year ago

2.5.7500217

1 year ago

2.5.7500216

1 year ago

2.5.7500215

1 year ago

2.5.7500214

1 year ago

2.5.7500213

1 year ago

2.5.7500212

1 year ago

2.5.7500233

12 months ago

2.5.7500232

12 months ago

2.5.7500231

12 months ago

2.5.7500230

12 months ago

2.5.7500229

12 months ago

2.5.7500228

12 months ago

2.5.7500227

12 months ago

2.5.7500226

12 months ago

2.5.7500225

12 months ago

2.5.7500224

12 months ago

2.5.7500223

12 months ago

2.5.7500200

1 year ago

2.5.7500211

1 year ago

2.5.7500210

1 year ago

2.5.7500209

1 year ago

2.5.7500208

1 year ago

2.5.7500207

1 year ago

2.5.7500206

1 year ago

2.5.7500205

1 year ago

2.5.7500204

1 year ago

2.5.7500203

1 year ago

2.5.7500202

1 year ago

2.5.7500201

1 year ago

2.5.7500189

1 year ago

2.5.7500188

1 year ago

2.5.7500187

1 year ago

2.5.7500186

1 year ago

2.5.7500185

1 year ago

2.5.7500184

1 year ago

2.5.7500183

1 year ago

2.5.7500182

1 year ago

2.5.7500181

1 year ago

2.5.7500180

1 year ago

2.5.7500179

1 year ago

2.5.7500199

1 year ago

2.5.7500198

1 year ago

2.5.7500197

1 year ago

2.5.7500196

1 year ago

2.5.7500195

1 year ago

2.5.7500194

1 year ago

2.5.7500193

1 year ago

2.5.7500192

1 year ago

2.5.7500191

1 year ago

2.5.7500190

1 year ago

2.5.7500167

1 year ago

2.5.7500166

1 year ago

2.5.7500165

1 year ago

2.5.7500164

1 year ago

2.5.7500284

12 months ago

2.5.7500163

1 year ago

2.5.7500283

12 months ago

2.5.7500162

1 year ago

2.5.7500282

12 months ago

2.5.7500161

1 year ago

2.5.7500281

12 months ago

2.5.7500160

1 year ago

2.5.7500280

12 months ago

2.5.7500159

1 year ago

2.5.7500279

12 months ago

2.5.7500158

1 year ago

2.5.7500278

12 months ago

2.5.7500157

1 year ago

2.5.7500178

1 year ago

2.5.7500177

1 year ago

2.5.7500176

1 year ago

2.5.7500175

1 year ago

2.5.7500174

1 year ago

2.5.7500173

1 year ago

2.5.7500172

1 year ago

2.5.7500171

1 year ago

2.5.7500170

1 year ago

2.5.7500169

1 year ago

2.5.7500168

1 year ago

2.5.7500141

1 year ago

2.5.7500140

1 year ago

2.5.7500139

1 year ago

2.5.7500138

1 year ago

2.5.7500137

1 year ago

2.5.7500136

1 year ago

2.5.7500135

1 year ago

2.5.7500134

1 year ago

2.5.7500133

1 year ago

2.5.7500123

1 year ago

2.5.7500122

1 year ago

2.5.7500121

1 year ago

2.5.7500120

1 year ago

2.5.7500119

1 year ago

2.5.7500118

1 year ago

2.5.7500117

1 year ago

2.5.7500116

1 year ago

2.5.7500115

1 year ago

2.5.7500114

1 year ago

2.5.7500113

1 year ago

2.5.7500132

1 year ago

2.5.7500131

1 year ago

2.5.7500130

1 year ago

2.5.7500129

1 year ago

2.5.7500128

1 year ago

2.5.7500127

1 year ago

2.5.7500126

1 year ago

2.5.7500125

1 year ago

2.5.7500124

1 year ago

2.5.7500101

1 year ago

2.5.7500100

1 year ago

2.5.7500112

1 year ago

2.5.7500111

1 year ago

2.5.7500110

1 year ago

2.5.7500109

1 year ago

2.5.7500108

1 year ago

2.5.7500107

1 year ago

2.5.7500106

1 year ago

2.5.7500105

1 year ago

2.5.7500104

1 year ago

2.5.7500103

1 year ago

2.5.7500102

1 year ago

2.5.7500089

1 year ago

2.5.7500088

1 year ago

2.5.7500087

1 year ago

2.5.7500086

1 year ago

2.5.7500085

1 year ago

2.5.7500084

1 year ago

2.5.7500083

1 year ago

2.5.7500082

1 year ago

2.5.7500081

1 year ago

2.5.7500080

1 year ago

2.5.7500099

1 year ago

2.5.7500098

1 year ago

2.5.7500097

1 year ago

2.5.7500096

1 year ago

2.5.7500095

1 year ago

2.5.7500094

1 year ago

2.5.7500093

1 year ago

2.5.7500092

1 year ago

2.5.7500091

1 year ago

2.5.7500090

1 year ago

2.5.7500079

1 year ago

2.5.7500078

1 year ago

2.5.7500077

1 year ago

2.5.7500075

1 year ago

2.5.7500074

1 year ago

2.5.7500073

1 year ago

2.5.7500072

1 year ago

2.5.7500071

1 year ago

2.5.7500070

1 year ago

2.5.7500069

1 year ago

2.5.7500035

1 year ago

2.5.7500068

1 year ago

2.5.7500067

1 year ago

2.5.7500066

1 year ago

2.5.7500065

1 year ago

2.5.7500064

1 year ago

2.5.7500063

1 year ago

2.5.7500062

1 year ago

2.5.7500061

1 year ago

2.5.7500060

1 year ago

2.5.7500059

1 year ago

2.5.7500058

1 year ago

2.5.7500046

1 year ago

2.5.7500045

1 year ago

2.5.7500044

1 year ago

2.5.7500043

1 year ago

2.5.7500042

1 year ago

2.5.7500041

1 year ago

2.5.7500040

1 year ago

2.5.7500039

1 year ago

2.5.7500038

1 year ago

2.5.7500037

1 year ago

2.5.7500036

1 year ago

2.5.7500057

1 year ago

2.5.7500056

1 year ago

2.5.7500055

1 year ago

2.5.7500054

1 year ago

2.5.7500053

1 year ago

2.5.7500052

1 year ago

2.5.7500051

1 year ago

2.5.7500050

1 year ago

2.5.7500049

1 year ago

2.5.7500048

1 year ago

2.5.7500047

1 year ago

2.5.7500023

1 year ago

2.5.7500022

1 year ago

2.5.7500021

1 year ago

2.5.7500020

1 year ago

2.5.7500019

1 year ago

2.5.7500018

1 year ago

2.5.7500017

1 year ago

2.5.7500016

1 year ago

2.5.7500015

1 year ago

2.5.7500034

1 year ago

2.5.7500033

1 year ago

2.5.7500032

1 year ago

2.5.7500031

1 year ago

2.5.7500030

1 year ago

2.5.7500029

1 year ago

2.5.7500028

1 year ago

2.5.7500027

1 year ago

2.5.7500026

1 year ago

2.5.7500025

1 year ago

2.5.7500014

1 year ago

2.5.7500013

1 year ago

2.5.7500012

1 year ago

2.5.7500011

1 year ago

2.5.7500010

1 year 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