#include <iostream>

using namespace std;

struct Vector {
    int x;
    int y;
};

bool is_orth(int xa, int ya, int xb, int yb, int xc, int yc, int xd, int yd) {
    Vector ab = Vector{xb - xa, yb - ya};
    Vector cd = Vector{xd - xc, yd - yc};

    int inner_product = ab.x * cd.x + ab.y * cd.y;
    return inner_product == 0;
}

int precision = 10000;

int main() {
    double xa, ya, xb, yb, xc, yc, xd, yd;
    string result;
    while (scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&xa,&ya,&xb,&yb,&xc,&yc,&xd,&yd) == 8) {
        if(is_orth(static_cast<int>(xa * precision),
                   static_cast<int>(ya * precision),
                   static_cast<int>(xb * precision),
                   static_cast<int>(yb * precision),
                   static_cast<int>(xc * precision),
                   static_cast<int>(yc * precision),
                   static_cast<int>(xd * precision),
                   static_cast<int>(yd * precision))) {
            result = "YES";
        } else {
            result = "NO";
        }
        cout << result << endl;
    }
    return 0;
}